码迷,mamicode.com
首页 > 其他好文 > 详细

使用Object.create()实现继承

时间:2014-11-04 23:59:25      阅读:435      评论:0      收藏:0      [点我收藏+]

标签:http   io   ar   使用   java   for   sp   on   log   

一、常见继承方式

我们日常开发中常见的继承方式主要有: 1、默认模式:

Child.prototype = new Parent();

2、借用构造函数:

function Child(a, b, c, d) {
	Parent.apply(this, arguments);
}

3、借用和设置原型:

function Child(a, b, c, d) {
	Parent.apply(this, arguments);
}
Child.prototype = new Parent();

4、共享原型:

Child.prototype = Parent.prototype;

5、使用临时构造函数:

var Proxy = function() {};
Proxy.prototype = Parent.prototype;
Child.prototype = new Proxy();

6、extend属性复制:

function extend(parent, child) {
	child = child || {};

	for(var key in parent) {
		if(parent.hasOwnProperty(key)) {
			child[key] = parent[key];
		}
	}

	return child;
}

当然在一些javascript库中(jQuery),还存在浅复制和深复制。 7、原型继承模式:

Object.create(Parent);

二、Object.create实现继承

本文将来学习第七种继承方式Object.create()方法来实现继承,关于此方法的详细描述,请戳这里。下面来通过几个实例来学习该方法的使用:

var Parent = {
	getName: function() {
		return this.name;
	}
}

var child = Object.create(Parent, {
	name: { value: "Benjamin"},
	url : { value: "http://www.zuojj.com"}
});

//Outputs: Object {name: "Benjamin", url: "http://www.zuojj.com", getName: function}
console.log(child);

//Outputs: Benjamin
console.log(child.getName());

我们再来看一个例子,再添加一个继承:

var Parent = {
	getName: function() {
		return this.name;
	},
	getSex: function() {
		return this.sex;
	}
}

var Child = Object.create(Parent, {
	name: { value: "Benjamin"},
	url : { value: "http://www.zuojj.com"}
});

var SubChild = Object.create(Child, {
	name: {value: "zuojj"},
	sex : {value: "male"}
})

//Outputs: http://wwww.zuojj.com
console.log(SubChild.url);

//Outputs: zuojj
console.log(SubChild.getName());

//Outputs: undefined
console.log(Child.sex);

//Outputs: Benjamin
console.log(Child.getName());

通过上面可以看出Object.create()方法实现了链式继承,及原型链的继承。如果在控制台打印出各个生成的对象,可以很清楚的看到。

//Outputs: true
console.log(Child.isPrototypeOf(SubChild));
//Outputs: true
console.log(Parent.isPrototypeOf(Child));

isPrototypeOf() 方法测试一个对象是否存在于另一个对象的原型链上。 以上就是本文对Object.create方法的描述,文中不妥之处,还望批评指正。

使用Object.create()实现继承

标签:http   io   ar   使用   java   for   sp   on   log   

原文地址:http://www.cnblogs.com/cuew1987/p/4075027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!