Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript原型什么是正确的?_Javascript_Prototype - Fatal编程技术网

Javascript原型什么是正确的?

Javascript原型什么是正确的?,javascript,prototype,Javascript,Prototype,嘿,伙计们,我有一个关于javascript原型的问题 以下哪项是使用prototype的正确且最佳的方法?为什么 var myClass = function(){ this.anotherFunction(); } myClass.prototype.anotherFunction = function(){ console.log('my prototype function'); } var foo = new myClass(); // which automaticaly pe

嘿,伙计们,我有一个关于javascript原型的问题

以下哪项是使用prototype的正确且最佳的方法?为什么

var myClass = function(){
this.anotherFunction();
}

myClass.prototype.anotherFunction = function(){
  console.log('my prototype function');
}
var foo = new myClass(); // which automaticaly performs the function


谢谢

第一个实现直接从构造函数调用方法。这些方法通常是某种初始化方法,用于构建此上下文所需的内部状态。在不适合JavaScript的OOP中,这意味着直接从构建初始状态的类构造函数调用方法

第二个实现将原型函数和另一个函数公开为公共接口的一部分


简言之:两种变体都是正确的,但实现了不同的概念

这不是一个或另一个。选择最适合您的情况的选项,一个将在您创建实例时立即执行,而另一个不会。由于var语句有错误,这两个选项都不起作用。@thefourhteye谢谢编辑!这两个例子与您的问题无关。@user3539582现在,重要的问题。你到底想做什么?所以第一个例子没有生成原型函数的副本?为什么它要复制一些东西?它只调用另一个函数。非常感谢,伙计!抱歉,我刚刚了解了原型,请原谅我问了一些奇怪的问题。我问的原因是,当你说“新对象”时,你复制了我在将所有函数包装到函数中之前所做的一切,然后再制作一个新的对象,从而复制所有内容,因此使用原型可以避免这种情况课题
var myClass = function(){
}

myClass.prototype.anotherFunction = function(){
  console.log('my prototype function');
}
var foo = new myClass();
foo.anotherFunction(); // performs the function only when called