EmberJS 重新打开类和实例
2018-01-03 13:22 更新
重新打开类和实例
这只是更新类的实现,而不重新定义它。这是必要的,只有当你不想扩展内置类,但更新其实现。这可以通过使用以下方法:
reopen():此方法通常会将属性和方法添加到实例。
reopenClass():方法会将属性和方法添加到类。
var Person = Ember.Object.extend({ firstName: null, lastName: null }); Person.reopen({ middleName: 'Smith' }); var Person = Ember.Object.extend({ firstName: null, lastName: null }); Person.reopenClass({ createMan: function() { return Person.create({isMan: true}) } });
上面的代码描述了如何重新打开类Person,将变量名称middleName添加到实例,并使用reopenClass为Person类添加createMan函数。
例子
<!DOCTYPE html> <html> <head> <title>Emberjs Reopening Classes and Instances</title> <!-- CDN's--> <script src="/attachements/w3c/handlebars.min.js"></script> <script src="/attachements/w3c/jquery-2.1.3.min.js"></script> <script src="/attachements/w3c/ember.min.js"></script> <script src="/attachements/w3c/ember-template-compiler.js"></script> <script src="/attachements/w3c/ember.debug.js"></script> <script src="/attachements/w3c/ember-data.js"></script> </head> <body> <script type="text/javascript"> //reopen() method for instances var Person = Ember.Object.extend({ firstName: null, lastName: null, }); //adding new variable to the Person class Person.reopen({ middleName: 'Smith', }); document.write('Middle Name: '+Person.create().get('middleName')); //reopenClass() method for classes var Person = Ember.Object.extend({ firstName: null, lastName: null, }); Person.reopenClass({ //creating new method for class Person createMan: function() { return Person.create({isMan: true}) } }); document.write('isMan: '+Person.createMan().get('isMan')); </script> </body> </html>
输出
让我们执行以下步骤,看看上面的代码如何工作:
将以上代码保存在 reopncls_inst.html 文件中
在浏览器中打开此HTML文件。
以上内容是否对您有帮助:
更多建议: