use*_*367 5 javascript prototype object-literal
var x = {
name: "japan",
age: 20
}
x.prototype.mad = function() {
alert("USA");
};
x.mad();
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用。对象字面量不能扩展?或x.mad()呼叫方式不正确。
你不能这样做。为了能够使用它定义对象方法和属性,prototype您必须将对象类型定义为构造函数,然后使用运算符创建它的实例new。
function MyObj() {}
MyObj.prototype.foo = function() {
// ...
}
var myObj = new MyObj();
myObj.foo()
Run Code Online (Sandbox Code Playgroud)
如果您想继续使用对象文字,将行为附加到对象的唯一方法是将其属性创建为匿名函数,如下所示
var myObj = {
foo: function() {
// ...
}
}
myObj.foo();
Run Code Online (Sandbox Code Playgroud)
后一种方式是最快的。第一种是在同一类型的多个对象之间共享行为的方法,因为它们将共享相同的原型。foo后一种方法为您创建的每个对象创建一个函数实例。
| 归档时间: |
|
| 查看次数: |
2870 次 |
| 最近记录: |