面向对象(八)继承___ 06专门的方法来实现继承(Object
2017-02-26 本文已影响10人
凸小布
title: 面向对象(八)继承___ 06专门的方法来实现继承(Object.creare)
date: # 文章生成时间,一般不改
categories: # 文章分类目录,可省略
- 面向对象
tags: # 文章标签,可省略
- 面向对象
- 基于原型面向对象的继承 # 个数不限,单个可直接跟在 tags 后面
Object.create
作用:创建对象,并且设置该对象的原型对象
兼容性问题:ES5
demo1:创建一个空的对象,并且设置这个对象的原型对象为obj
<script>
var obj1 = {name:"默认的名称"};
var obj2 = Object.create(obj1);//创建一个空的对象,并且设置这个对象的原型对象为obj
console.log(obj2.name); //默认的名称
</script>
demo2:解决兼容性问题方式一
<script>
var obj = {name:"张浩瀚"};
if(typeof Object.create == "function")
{
var o = Object.create(obj);
}else
{
//var o = {};
//o.__proto__ = obj; //不建议这样写(__proto__是非标准的属性)
function F(){};
F.prototype = obj;
var o = new F();
}
</script>
demo2:解决兼容性问题方式二
<script>
var obj = {name:"张浩瀚"};
if(typeof Object.create == "function") {
var o = Object.create(obj);
}else
{
Object.create = function(){
function F(){};
F.prototype = obj;
var o = new F();
}
}
Object.create(); //只需要调用该方法就可以创建对象
</script>
demo3:解决兼容性问题方式三
<script>
var obj = {name:"张浩瀚"};
function createObj(obj) {
if (Object.create)
{
return Object.create(obj); //创建对象并且设置原型
}else
{
function F(){};
F.prototype = obj;
return new F();
}
}
//创建对象并且设置原型
var o = createObj(obj);
var o2 = createObj(o);
</script>