这个javascript代码有什么问题?
问题描述:
<html>
<head>
<script type="text/javascript">
function Person (name, age) {
this.name = name;
this.age = age;
this.sayName = function() {
alert(this.name);
}
}
var person1 = new Person ("tom", 29);
var person2 = new Person ("frank", 21);
alert(person1.sayName==person2.sayName);
</script>
</head>
<body>
</body>
</html>
答
没有什么不妥之处(除了第6行略显迂腐缺少分号等)
因为sayName
功能是在构造函数中创建一个新的函数创建每次创建新的对象时。 (所以功能是不同的,==
返回false)
周围的人该得到的功能附加到原型对象来代替:
function Person (name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayName = function() {
alert(this.name);
};
var person1 = new Person ("tom", 29);
var person2 = new Person ("frank", 21);
alert(person1.sayName==person2.sayName);
这将创建只有一个函数(节省您的内存)和警报会说'真'。
答
您正在比较函数pinters,而不是结果。
尝试:
alert(person1.sayName() == person2.sayName());
不过话又说回来:你sayName()触发另一个警报()。这个代码是关于什么的?
+0
非常感谢你 – jsnewman 2011-03-24 02:27:15
这取决于你期望它做什么。 – 2011-03-24 01:41:16
你期待它做什么?发生了什么呢? – 2011-03-24 01:41:47
Dreamweaver说我在第7行有一个语法错误(this.name = name;)。那么什么是语法错误。谢谢 – jsnewman 2011-03-24 02:25:24