在原型链上进行批量设置公有属性和常用的六种继承方式

来源:互联网 发布:主播打广告多少钱 知乎 编辑:程序博客网 时间:2024/04/25 15:17

一、在js的原型链模式下,如何进行批量设置公有属性?



手动设置constructor为Fn,而不是Object:




二、原型链模式的六种常见继承方式:



propertyIsEnumerable()方法是判断是否为可枚举属性,对象的私有属性是可枚举的,公有属性(在obj所属类的.prototype上的)是不可枚举的,这里的if判断是输出obj的可枚举属性(私有属性),这个判断方法效果等同与hasOwnProperty()方法的判断结果,hasOwnProperty()用于判断对象的私有属性。


现在的Fn.prototype是Fn,指向同一个内存地址,所以说Fn.prototype改变,函数Fn也会跟着改变,而Fn改变,那么Fn.prototype也会跟着改变。

但是我们不想他们两个发生改变的联动,Fn.prototype修改是Fn不变,那该怎么做?

可以把obj克隆一份:


这种方法可以,但是麻烦,可以使用ESACJavascript5新增的create方法:




obj2.getY可以输出2,obj2中没有私有属性,但是把obj的私有属性作为obj2上一级的私有属性,相当于在obj2和Object之间增加一层。

原型继承:

都知道:


原型继承例子:


//B继承A,就是在B的原型指向A的实例





Call继承:




冒充对象继承:



混合模式继承:




寄生组合继承:



公有的只拿公有的,私有的就公私属性都有。

周氏继承法

中间类继承法-------不兼容








阅读全文
0 0
原创粉丝点击