类的继承在JavaScript中
方法我是新来的JavaScript应用程序development.When我来到的功能和所有我发现像类的继承在JavaScript中
function Parenizor(value) {
console.log(this.setValue());
}
Parenizor.method('setValue', function() {
console.log('am called');
});
Parenizor.method('getValue', function() {
return 1;
});
Parenizor.method('toString', function() {
return 2;
});
和代码当我调用的函数一样
var a = new Parenizor(1)
a.setValue()
这引发了我的错误一样Undefined not a function
..Why是这样的??。希望有人在这里CA n找到我的错误..Thanz .. :)
看起来你的代码来自Classical Inheritance in JavaScript,道格拉斯克罗克福德。
我猜你没看过这部分:
为了使上述工作的例子,我写了四种sugar方法。首先,
method
方法,它将一个实例方法添加到类中。Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; };
..是啊,我从CrickFord博客得到了这段代码..我没有得到你的意思是糖的方法..你可以通过示例提供工作 – user3902466 2014-10-10 17:27:45
只需将代码复制粘贴到你的javascript的顶部 – orhanhenrik 2014-10-10 17:29:16
只需包括代码在尝试使用'Parenizor.method'之前。 – Oriol 2014-10-10 17:29:20
这不是你如何定义一个方法。这样做:
function K() {}
K.prototype.setValue = function() {};
K.prototype.getValue = function() {};
更多解释:http://stackoverflow.com/questions/6918509/this-method-function-vs-obj-prototype-method-function – sma 2014-10-10 17:22:02
所以调用像Parenizor.method('方法')无效? – user3902466 2014-10-10 17:24:51
@ user3902466不,它不是无效的语法。但默认情况下它不存在,您必须手动定义'Function.prototype.method'。 – Oriol 2014-10-10 17:28:17
JavaScript是面向对象的,不带班,但与原型。 首先,当你声明Parenizor时,你声明了一个'构造函数'。 你probaly想这样的:
function Parenizor(){
var value = null;
this.setValue = function(val){
value = val;
};
this.getValue = function(){
return value;
};
this.toString = function(){
return String(value);
};
}
或也设置到对象原型:
function Parenizor(){}
Parenizor.prototype._value = null;
Parenizor.prototype.setValue = function(){...};
Parenizor.prototype.getValue = function(){...};
Parenizor.prototype.toString = function(){...};
怎么样'Parenizor.prototype.setValue =函数(){代码}'.. – orhanhenrik 2014-10-10 17:22:04
@Izzey是的,我知道要通过原型调用..但我只是想通过.method()调用它..有可能就像我做的或是否有任何方式调用.method() – user3902466 2014-10-10 17:25:54
请不要使用Crockford作为参考古典继承。他的代码都没有正确执行,他希望使用私有变量,因为他担心封装,但是通过修改他不属于它的对象(函数和对象原型)来制动它,也许这个答案可以帮助你:http://stackoverflow.com/问题/ 16063394/prototypical-inheritance-write-up/16063711#16063711 – HMR 2014-10-11 00:41:57