Object.create()介绍

Object.create(null) 创建的对象是一个空对象,在该对象上没有继承 Object.prototype 原型链上的属性或者方法
例如:toString(), hasOwnProperty()等方法

参数说明
obj创建对象的原型,表示要继承的对象
propertiesObject(可选 )也是一个对象,用于对新创建的对象进行初始化

我们来看看底层实现

	Object.create =  function (o) {
		var F = function () {};
		F.prototype = o;
		return new F();
	};

下面我们来看具体应用:


	//创建一个Obj对象
	var Obj ={
		name:'mini',
		age:3,
		show:function () {
			console.log(this.name +" is " +this.age);
		}
	}

	//MyObj 继承obj, prototype指向Obj
	var MyObj = Object.create(Obj,{
		like:{
			value:"fish",        // 初始化赋值
			writable:true,       // 是否是可改写的
			configurable:true,   // 是否能够删除,是否能够被修改
			enumerable:true      //是否可以用for in 进行枚举
		},
		hate:{
			configurable:true,
			get:function () { console.log(111);  return "mouse" }, // get对象hate属性时触发的方法
			set:function (value) {                                 // set对象hate属性时触发的方法 
				console.log(value,2222);
				return value;
			}    
		}
	});
	

划重点:这里get和set 方法似乎还蕴含更大的潜力 。我们可以利用它们去实现数据的过滤和数据的绑定 。实现一些简单的mvvm的效果

Object.create继承的应用:


	var A = function () { };
	A.prototype.sayName=function () {
		console.log('a');
	}

	// B的实例继承了A的属性
	var B = function () { };
	B.prototype = Object.create(A.prototype);
	var b = new B();
	b.sayName();  // a

划重点:相对于构造函数的继承Object.create继承实现了将A,B的原型完美分隔 。双方不会互相影响。这是Object.create亮点所在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值