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

Cannot add method in js object via prototype property

本文关键字:对象 js 添加 方法 属性 原型      更新时间:2023-09-26

这是我在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();