代码中的原型.js和习语
Prototype.js and idiom in code?
我有很多使用Prototype's Object.extend的代码。它看起来像这样...
var x = Class.create();
Object.extend(
Object.extend( x.prototype, Ajax.Application.Base.prototype ),
{ ... stuff ... }
);
现在Object.extend
的签名是Object.extend(destination, source) → Object
因此,我们正在用Ajax.Application.Base.prototype扩展x.prototype。然后我们扩展该对象(x.prototype)。用更多的东西。
这与双扩展()相同吗?将它们组合在一起有什么好处?
这些是这样的关联吗..
Object.extend(x,y); Object.extend(x,z) == Object.extend(Object.extend(x,y),z);
回答您的问题 - 是的,Object.extend 确实返回了新对象,该对象具有作为参数传递的 2 个对象的所有方法和属性。
但是,有一种更有用和简洁的方法来扩展PrototypeJS类
(从我的另一个答案中复制一点 https://stackoverflow.com/a/15527223/341491)
var myChildClass = Class.create(myClass,
{
initialize : function($super,option)
{
$super(option);
// the child class needs option's default value at 150 or whatever is
// passed so run the parent initialize first and then redefine the
// option property
this.option = (option ? option : 150);
// you can still run methods in the parent that are not overridden in
// the child
this.testme();
}
});
var child = new myChildClass();
child.showme();
//will alert() 151 and return 151
这将创建一个名为 myChildClass 的类,该类是从 myClass 扩展而来的。此方法的区别在于能够使用指向父类的 $super()
方法。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- 代码中的原型.js和习语
- JavaScript同步Ajax请求习语
- 用于做常见事情的 JavaScript 习语
- 有没有一个更简洁的Coffeescape习语来形容这个
- 习语Javascript编码风格-何时在原型上声明函数,何时在函数构造函数内声明函数
- React.js中的非原语默认道具
- 使用node.js和gm绘制许多图形原语的方法是什么?
- 用于类定义的首选JavaScript习语
- 从远程服务器获取一个JSON文件(包含希伯来语值),并用Node.js解析它
- 如何在PIXI.js中绘制相同原语的多个实例
- D3习语,用于在enter()上附加分组元素
- 习语AngularJS模态
- 提炼出一个常见的习语
- 在 pc 上使用相同的 js 代码和 tizen 将日期从公历转换为波斯语的不同结果