您的位置:首页 > 其它

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

2017-07-24 14:58 197 查看
一、在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继承:
















冒充对象继承:











混合模式继承:
















寄生组合继承:











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

周氏继承法

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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: