对象 包装——JS学习笔记

对象

对象的创建方法

1,(plainObject )对象字面量 | | 对象直接量,var obj={ },

var mrWang = {
            name: ' wang',
            age: 40,
            sex: 'male',
            health: 100,
            energy: 100,
            drink: function() {
                console.log('I am drinking');
                this.health--;   //控制台打印只有返回值才有结果 没有返回值就是underfined
            },
            run: function() {
                console.log('I am runing');
                this.energy--;  //控制台打印只有返回值才有结果 没有返回值就是underfined
            }

};

对象的增

    mrWang.wife = '刘美女'; //对象的属性值字符串最好要用''表示,为了和后端更好配合

对象的删

delete mrWang.age
 console.log(mrWang.age) //undefine d 知识点:未声明的变量使用时 会报错 。
 //访问对象的未设置的属性 结果是undefined。

2,构造函数
1)系统自带的构造函数
Object()。new object()结果就是一个对象,用一个变量去接受,就能为一个对象 var obj=new Object()。Object相当于工厂,每次创建的新对象都是独一无二且独立的。

2)自定义
大驼峰(例如:TheFirstName,小驼峰:theFirstname) 和普通函数不一样就是命名不同。
构造函数内部原理:三部曲:1,在函数体最前面隐式的加上this={}2,执行this.XXX=XXX。3,隐式的返回this。

 function Student(name, height) {
  //  1,var this={ }
 this.name = name;
 this.height = height;
 this.energy = 100;
 this.run = function() {
                 this.energy--;
                };

 // 2,执行this.xxx=xxx; 
 //  若在隐式执行前 显示的返回{},this.run的下面添加 return {},那var person=new Student的结果是 person={}。
 // 如果隐式执行前,添加的是 return 123,var person=new Student正常执行。原始值不影响结果。
  }
包装类:String();Boolean();Number();
var num = new Number(123);
var str = new String('abc');
var bol = new Boolean('true');

原始值是不能有属性和方法的 ,经过包装类后才能有属性和方法。如以下案例的解析(数字):

var num = 6;
   num.len = 2; 
// 隐士执行 new Number(6).len=3; delete 。 
console.log(num.len); //undefined 
 // 重新为num添加属性,不会报错,但是这个属性没有值 因此结果是undefined。

num是原始值没有属性和方法的 ,为其添加属性和方法时不会报错,但,新建数字对象,隐式将其包装后添加属性 最后删除。删除完后num.len就不存在 无法访问了。

再有如下案例(字符串):

 var str = 'abcd';
 str.length = 2; //new String('abcd').length=2;  delete 因此不会报错
 console.log(str.length); //4.
 //new String('abcd').length.对象字符串有length属性,
 var str = 'abc';
 str += 1; //'abc1'
  var test = typeof(str); //typeof(str)='string',test='string'
 if (test.length == 6) {
        test.sign = "typeof的返回结果可能为String";
    //  new String('string').sign=xxx;    delete

        }
   console.log(test.sign); // 结果是 undefined
   // 重新 new String('string').sign 。但是没有值

你可能感兴趣的:(对象 包装——JS学习笔记)