为什么这段代码有效:!!!!!!
var Class = new MyClass();
function MyClass() {}
var Class1 = new MyClass();
function Class1() {}
console.log(Class1.prototype == Class.prototype);
MyClass.prototype.sayName = function() {
alert("abc");
};
Class.sayName();
但是这个不起作用。系统一直告诉我sayName
未定义但如果我声明了一个函数,系统会在执行代码之前先读取它吗?
function sayName() {
alert("abc");
}
MyClass.prototype.sayName();
Class.sayName();
答案 0 :(得分:0)
您的代码正在尝试调用不存在的函数:
@Test
相反,您打算将以前定义的函数分配给MyClass类:
MyClass.prototype.sayName();
现在你可以打电话给它:
MyClass.prototype.sayName = sayName;
答案 1 :(得分:0)
在第一个代码块中,您将一个匿名函数分配给prototype.sayName属性。在第二个代码块中,您将声明该函数,但不将其分配给原型。 ' MyClass.protocol.sayName()'当错误可能被抛出。被调用,因为sayName未在' MyClass.protocol'
中声明尝试以下方法:
var sayName = function() {
alert("abc");
}
function sayHello() {
alert("hello");
}
function MyClass() {};
MyClass.prototype = {
constructor: MyClass,
sayName: sayName,
sayHello: sayHello
}
var myClass = new MyClass();
myClass.sayName();
myClass.sayHello();
alert(sayHello.__proto == myClass.sayHello.__proto);