继承的问题

Posted GR07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承的问题相关的知识,希望对你有一定的参考价值。

说明

Object.create() 方法可以创建对象。

第一个参数是为即将创建好的对象指定原型,
第二个参数是一个对象,同Object.defineProperties()的第二个参数一样。

 

区别

同样是创建对象关于{} 与 new Object() 与 Object.create() 三者之间的区别,我查了不少博客后我所理解的区别:

当Object.create()的第一个参数为null时 不会继承Object的原型链上的属性 可以自己打印看看是空的{}。

new Object() 和 {} 是完全一样的。

 

使用

var Obj ={
  name:\'mini\',
  age:3,
  show:function () {
    console.log(this.name +" is " +this.age);
  }
}

// 上面的Obj对象就是下面MyObj的原型

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" },  // 获取对象hate属性时触发的方法
    set:function (value) {  // 设置对象hate属性时触发的方法 
      console.log(value,2222);
      return value;
    }    
  }
});

 

继承

在讲解Object.create方法在构造函数上的应用之前我们先来回顾构造函数的继承

var Animal=function () {}
Animal.prototype.show=function () {
  console.log("animal");
}
var Dog = function () { }
var subClass = function () {}
subClass.prototype = Animal.prototype;
Dog.prototype = new subClass(); // 继承Animal 

以上代码是我们实现继承最常用的一种方式,这种方式是借助于一个代理函数,通过继承构造函数的实例来继承构造函数上的属性 。

通过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

 

以上是关于继承的问题的主要内容,如果未能解决你的问题,请参考以下文章

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段

Flask之模板之宏继承包含

如何覆盖继承的嵌套类中存在的虚拟方法

java中封装,继承,多态,接口学习总结

php如何实现多继承?

在android中使用带有片段的roboguice的任何简单示例?