欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

再论JavaScript的继承

程序员文章站 2022-06-03 19:30:21
...

Yahoo 的Stoyan Stefanov 发表了一篇好文章-JavaScript的 class-less对象

他将这篇文章发表在了JavaRanch上,在Java社区来讨论他们的不同之处。

他深入的研究了:
*JavaScript对象

这是一个空对象
var myobj = {};

你可以添加一些有用的功能:
myobj.name = "My precious";
myobj.getName = function() {return this.name};


你也可以用另一种方法来创建对象和添加属性:
var another = {
  name: 'My other precious',
  getName: function() {
    return this.name;
  }
};




*构造函数
这是一个创建构造函数的例子:
function ShinyObject(name) {
  this.name = name;
  this.getName = function() {
    return this.name;
  }
}


如今你可以这样来创建对象,更像Java:
var my = new ShinyObject('ring');
var myname = my.getName(); // "ring"


*函数的对象和属性

*继承

*复制继承的属性
假设你有这些对象:
var shiny = {
   shiny: true,
   round: true
};

var normal = {
  name: 'name me',
  getName: function() {
    return this.name;
  }
};


如何来得到这些属性:
function extend(parent, child) {
  for (var i in parent) {
    child[i] = parent[i];
  }
}

extend(normal, shiny); // inherit
shiny.getName(); // "name me"


*Crockford的beget对象:

function begetObject(o) {
  function F() {}
  F.prototype = o;
  return new F();
}



*YUI的扩展()
function extend(Child, Parent) {
  var F = function(){};
  F.prototype = Parent.prototype;
  Child.prototype = new F();
}

相关标签: JavaScript F#