构造函数 系统再带 new Object();Array();Boolean();String();Date(); 自定义 Object.create(原型)方法。
var obj={ name:“mrShi”, age:20, sex:“male”, health:100, speak:function () { alert("") console.log(–obj.health); }, hope:function () { console.log(++this.health);
} };//this 指向最近的。查看 . 、 增加 = 、 删除 delete 、 obj.name //可以访问到。 obj.work=“IT”;// 对象是引用值是可以后续添加赋值的。 delete obj.health ;//就会删除这个属性
对象的创建方法
var obj = { } plainObject 意思是对象字面量/对象直接量。
构造函数 1)系统自带的构造函数 var 某= new Object() 这样创建的对象都是相互独立的。 示列: var obj=new Obiect();//可以用引用值得方法加; obj.name = ‘abc’; obj.sex = ‘male’; //这样加的都是字符串。
2) 自定义 function Person(a){ }; var person1 = new Person(a);
提示构造上函数和函数基本没有任何区别;
注意大驼峰式命名规则。 \转义字符。构造函数跟像是函数和对象结合使用。 // 工厂模式-自带一些的属性 function Car(color) {//这是个车间,this才是这个车。 this.color=color; this.name=“BMW”; this.height=1400; this.lang=“4900”; this.weight=1000; this.health=100; this.run=function () { this.health–; } } var car =new Car(“red”); var car1 =new Car(“blue”);
car.name+="-plus"; car1.name+="-luxury";
构造函数内部原理
注意当一个函数new 被一个变量接收就形成了构造函数 隐式三步 1.那么当这个函数形成,它就会在函数体内逻辑顶端形成一个, var this={ }//先是空对象。
2.执行 this.xxx = xxx; 那个在函数的 AO{ this:{name:‘zhangsan’, age:age, sex:sex } }
3.隐式的返回this return this
大概 new -->在逻辑顶端隐式this空对象–>this.某某=某某–>底部隐式的return this–>被某变量接收–>称为这个变量的一部分–>完成构造函数。
包装类 提示原始值没有属性和方法的,属性和方法只有对象能有。 Object 里包括对象自己,包括数组、function都算一种对象。 原始值是独立个体的存在。
只有原始值数字 字符串 才是原始值不能有自己得属性和方法,但是对象可以有;照样可以用引用值的方法添加属性值或删除。 var num=new Numder(123);//变成对象123了。 数字的对象可以参与运算,num*2; 那么参与了运算之后它就是对象是数字了。
var str = new String(‘abcd’);//变成对象‘adcd’了。
var bol = new Boolean(‘true’);
其中 undifinde null不可以有属性。
原始值是不能有有属性和方法的,但是js为什么能调用就是因为包装类。 比如说 string.length numder 的一些运算。
示列: //包装类 var num =4; num.len=3; //计算机自己隐式的 new Number(4).len = 3; 又delete。这是给加上之后又删除了。
等我们在正式调用的时候 //new Number(4).len 这里不好意思你做过的东西在上面已经被删了,现在就是系统隐式操作一遍也没了,所以是nudefined console.log(num.len)
这就是原始值用引用值添加方法不报错但是,系统会隐式执行然后删除,因为默认是不允许的。 原始值支持一些能操作对象的功能但是,系统默认是无法修改的。