无法通过原型属性在 js 对象中添加方法
Cannot add method in js object via prototype property
这是我在javascript对象中添加方法的代码。我搜索了很多,但没有任何效果。怎么了??
<!DOCTYPE html>
<html>
<body>
<script>
var person = new Object();
person.prototype.display=function(){
alert("ok");
}
person.display();
</script>
</body>
</html>
试试这个:
function person() {}
person.prototype.display = function(){ alert("ok"); }
var p = new person();
p.display();
已编辑以修复语法错误。
如果你试图在javascript中实现原型继承,"person"需要是一个函数,而不是一个对象。
我认为这是一个很好的介绍 - http://alexsexton.com/blog/2013/04/understanding-javascript-inheritance/。
不能将属性添加到未定义。
var foo = new Object();
foo.prototype; // undefined
Object.getPrototypeOf(foo); // prototype of all objects
要使用自己的原型创建对象,请使用Object.create
var proto = {},
foo = Object.create(proto);
foo.prototype; // still undefined
Object.getPrototypeOf(foo) === proto; // true
或者,将new
与虚拟函数一起使用
var Obj = function () {},
proto = Obj.prototype = {};
var foo = new Obj;
foo.prototype; // again still undefined
Object.getPrototypeOf(foo) === proto; // true
一旦你有了最后两个的原型,你就可以像往常一样使用它了
。proto.display = function () {console.log('display');};
foo.display();
相关文章:
- 使用JS将数组转换为json对象
- 查看JS对象的所有键,甚至是getter定义的键
- 在URL中传递JS对象
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- Node.js中的JavaScript原型对象效率
- 如何使用自定义功能覆盖时间轴对象.js时间轴对象的_repaintMinorText
- 如何在第三轴上旋转 3D 对象.js
- 三个中是否有容器类型对象.js来转换一组子对象
- 从 JSON 对象 - JS 周围删除双引号
- 删除对象JS中的节点
- 在对象数组中搜索非空对象JS
- 按未定义的值从数组中选择对象?JS
- 递归循环,直到我们'重新处理对象[JS]
- 向窗口对象-js添加新属性时得到通知
- 如何包含对象/关联数组到对象(js)
- 加载依赖于页面的面向对象JS属性的最好方法是什么?
- 合并新的数组对象到现有的对象js
- 获取带有下划线的数组中的对象.js
- 在带有下划线的嵌套集合中查找对象.js