谈谈Javascript中的原型链
标签:
JavaScript
谈谈Javascript中的原型链
提到Javascript就不得不提起原型链,javascript在设计之初就是基于原型的。下面我们就来说说Javascript中原型链的用法。
对象的创建与继承//字面量创建对象
var obj = {}
//指定原型对象创建对象
var obj1= Object.create(obj)
在这里,我们创建了两个对象obj,obj1,其中obj继承于基本对象Object,obj1继承于obj1
类的继承//继承单个父类
//创建Shape父类
var Shape = function(x,y){
this.x = x;
this.y = y;
}
Shape.prototype = {
change:function(x,y){
this.x = x;
this.y = y;
}
}
//常见Rect子类,继承Shape
var Rect = function(){
Shape.call(this);
}
Rect.prototype = Object.create(Shape.prototype)
Rect.prototype.contructor = Rect;
//继承多个父类
var MyClass = function (){
SuperClass.call(this);
OtherSuperClass.call(this);
}
MyClass.prototype = Object.create(SuperClass.prototype);
Object.assign(SuperClass.prototype,OtherSuperClass.prototype)
MyClass.prototype.contructor = MyClass;
以上代码就是利用原型链继承单个和多个父类的代码实现。
在这里要提醒的是,当我们用for in 遍历某个对象时,原型链上面的每一个可枚举的属性都会被遍历出来,此时我们要Object.hasOwnProperty这方法去判断当前属性是否是原型链上面的属性。
proto对象是各个浏览器厂商实现的非标准的javascript属性
var obj = new SomeClass();
//=======等于
var obj = new Object();
obj.__proto__ = SomeClass.prototype;
SomeClass.call(obj)
Object.defineProperties
var obj = {};
obj.defineProperties(obj,{
'someattribute':{
writable:true//可读,
value:true,//属性值
configurable:true//是否可以通过delete删除,
emumerable:true,//是否可以枚举
get:function(){
//gettter
},
set:function(){
//setter
}
}
})
Object.freeze(ojb)//冻结某对象,使obj上面的属性不可修改不可添加
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦