无法通过prototype属性在js对象中添加方法

时间:2013-08-28 15:26:41

标签: javascript prototype

这是我在javascript对象中添加方法的代码。我搜索了很多,但没有任何对我有用。怎么了?

<!DOCTYPE html>
<html>
<body>

<script>

var person = new Object();

person.prototype.display=function(){

alert("ok");

}

person.display();

</script>
</body>


</html>

3 个答案:

答案 0 :(得分:0)

您无法将属性添加到 undefined

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();

答案 1 :(得分:0)

试试这个:

function person() {}
person.prototype.display = function(){ alert("ok"); } 
var p = new person();
p.display();

已编辑以修复语法错误。

答案 2 :(得分:0)

如果你试图在javascript中实现原型继承,那么'person'需要是一个函数,而不是一个对象。

我认为这是一个很好的介绍 - http://alexsexton.com/blog/2013/04/understanding-javascript-inheritance/