js之Object属性封装
在object.create出现之前,我们实现继承一般使用:
function base(){}
function children(){}
//实现children继承base
(function(){
var Super = function(){};
Super.prototype = carvasCloth.prototype;
children.prototype = new Super();
})();
而object.create源代码的实现逻辑是:
Object.create = function (o) {
var F = function () {};
F.prototype = o;
return new F();
};
所以我们实现继承可以简写为:
var chidlren = Object.create(base.prototype);
Object的其他属性:
Object.defineProperty:Object.defineProperty(chidlren ,"name",{
value:"name",
writable:true,//是否可写
enumable:true,//是否可枚举
configurable:true,//设置为false后,则不可在重新编辑
get:function(){},
set:function(){}
})
Object.defineProperties:设置多个对象
Object.getOwnPropertyDescriptor(obj,attr):返回指定对象指定属性的定义,不会返回原型链上的属性
Object.getOwnPropertyNames:返回指定对象的所有属性(包括不可枚举的属性),不会返回原型链上的属性,
object.hasOwnProperty(attr):判断对象是否包含某属性,不考虑原型属性
Object.getPrototypeOf(object):返回对象的原型对象
注:本文中Object指的是Object对象自身,object指的是自定义对象 attr指的是属性