You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
注意点 console.log(Person.constructor.constructor);// function Function() { [native code] }
说明当执行一个function Person(){}函数的时候,实际上是new了一个Function构造器
varx=newFunction("\ var a=1;\n\ console.log(a)\n\ return a;");console.log(x);// function anonymous(){........} 显示一个匿名函数varx=function(){vara=1;returna;}console.log(x);// function (){........} 与上面的差别是少了匿名函数这几个字
对象对象的编程方式
对象如何存在浏览器内存的方式。
对象被new或者创造的时候,从堆区开辟了一个空间地址,来存放它的数据,通过x,y两个栈记录它的堆地址空间,在访问x,y的时候其实是指向堆空间来进行操作的。
工厂模式
构造函数模式
注意点
console.log(Person.constructor.constructor);// function Function() { [native code] }
说明当执行一个function Person(){}函数的时候,实际上是new了一个Function构造器
原型模式
有一个连接存在于实例与构造函数的原型对象之间
验证实例与构造函数的原型对象之间是否有关联
检验对象的一个属性是否是属于原型对象
所以在使用for in循环的时候需要注意,该方法会把实例属性,以及原型对象属性全部列出来
由于没有直接测定是否属性在实例的原型链上的方法
原型链的动态性
由于在原型中查找值的过程是一次搜索,因此我们对原型对象所做的任何修改都能够立即从实例上反映出来
所以:new对象的时候,他是根据当前的prototype对象地址来进行引用的
组合使用构造函数模式和原型模式
动态原型模式
看起来更加的结实,感觉是一个整体一般。
但是需要注意的点是,这种形式不能用字面量重写原型!
原型链关系的方法汇总
以下面的Person为例
Object对象方法
原型对象上的方法
实例上的方法
The text was updated successfully, but these errors were encountered: