如何在knockout.js中创建对象作为文字而不是函数

时间:2014-11-06 23:46:06

标签: javascript knockout.js

在他的书“ Javascript - 好的部分”中,Douglas Crockford提到了构造函数调用模式(这是我们使用{{1}实例化simili类的方法。关键字:

  

构造函数调用模式JavaScript是一个原型   继承语言。这意味着对象可以继承属性   直接来自其他对象。该语言是无类别的。这是一个   彻底背离现在的时尚。今天大多数语言都是   经典的。原型继承具有强大的表现力,但是   没有被广泛理解。 JavaScript本身并不自信   原型性质,所以它提供了一个对象制作语法   让人联想到古典语言。很少有经典程序员   发现原型继承是可以接受的,而且是经典的   灵感的语法掩盖了语言真正的原型本质。它是   两个世界中最糟糕的。如果使用new调用函数   前缀,然后将创建一个新的对象与隐藏的链接   函数的原型成员的值,这将受到约束   那个新对象。新的前缀也改变了行为   退货声明。

new
  

与新前缀一起使用的函数称为构造函数。按照惯例,它们用变量保存在变量中   大写名称。如果在没有新前缀的情况下调用构造函数,   没有编译时或运行时警告就会发生非常糟糕的事情,   所以资本化公约非常重要。使用此   不建议使用构造函数的样式......

     

...如果使用新前缀调用该函数并且返回值不是对象,则返回此(新对象)   代替。

然后他建议使用闭包来避免构造函数调用,如下所示:

 // Create a constructor function called Quo.
 // It makes an object with a status property.
 var Quo = function (string) {
     this.status = string;
 };
 // Give all instances of Quo a public method

 // called get_status.
 Quo.prototype.get_status = function () { 
     return this.status;
 };
 // Make an instance of Quo.
 var myQuo = new Quo("confused");
 document.writeln(myQuo.get_status()); // confused

我的问题是这样的:有没有办法不使用构造函数调用和knockout中的applyBinding()调用,并将对象构建为文字而不是函数?并使用// Create a maker function called quo. It makes an // object with a get_status method and a private // status property. var quo = function (status) { return { get_status: function () { return status;} }; }; // Make an instance of quo. var myQuo = quo("amazed"); document.writeln(myQuo.get_status( )); 代替object.create()关键字?

0 个答案:

没有答案