JavaScript中new语句

来源:互联网 发布:淘宝助理连打只能2单 编辑:程序博客网 时间:2024/06/07 13:22

Javascript是世界上第一个被大量使用的支持Lambda函数的语言,本质上属于与Lisp同类的函数式编程语言。但是当前世界,90%以上的程序员都是使用面向对象编程。为了靠近主流,Javascript做出了妥协,采纳了类的概念,允许根据类生成对象。

类是这样定义的:

  var Cat = function (name) {    this.name = name;    this.saying = 'meow' ;  }


然后,再生成一个对象

  var myCat = new Cat('mimi');

这种利用函数生成类、利用new生成对象的语法,其实非常奇怪,一点都不符合直觉。而且,使用的时候,很容易忘记加上new,就会变成执行函数,然后莫名其妙多出几个全局变量。所以,建议不要这样创建对象,而采用一种变通方法。

Douglas Crockford给出了一个函数:

  Object.beget = function (o) {    var F = function () {};    F.prototype = o ;    return new F;  };

创建对象时就利用这个函数,对原型对象进行操作:

  var Cat = {    name:'',    saying:'meow'  };  var myCat = Object.beget(Cat);


对象生成后,可以自行对相关属性进行赋值:

  myCat.name = 'mimi';