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指的是属性

 

posted @ 2017-11-08 19:07  dami.white  阅读(320)  评论(0编辑  收藏  举报