demo.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
//《JavaScript语言精粹》作者提出了一个方式来实现继承
// function jicheng(obj){ // obj就是要继承的父类对象。
// var o = {};
// o.__proto__ = obj;
// return o;
// }
//
// var o = jicheng({name:"张三"});
// console.log(o);
//经典继承的语法
//Object.create(obj) // obj就是要继承的父类对象。
//返回值为一个对象,继承自参数中的obj
//这个方法是ES5中出来的,所以存在兼容性问题
// var o = { // 要继承的父类对象。
// name:"周三"
// };
// var obj = Object.create(o);
//
// console.log(obj.name);
//如何处理Object.create的兼容性问题
var obj = { // 要继承的父类对象。
name:"周三"
};
//检测浏览器的能力,如果没有Object.create方法就给他添加一个(不推荐使用)
if(Object.create){
var o = Object.create(obj);
}else{
Object.create = function () {
function F() {
}
F.prototype = obj;
var o = new F();
}
var o = Object.create(obj); // o就是子类对象。
}
//自己定义个函数(推荐)
function create(obj){ // obj就是要继承的父类对象。
if(Object.create){
return Object.create(obj);
}else{
function F() {
}
F.prototype = obj;
return new F(); // 返回子类对象。
}
}
// var subObj = create(parentObj);
</script>
</head>
<body>
</body>
</html>