在我的一个问题中,我得到以下代码作为答案之一.我现在对语言的理解已经来得更好了,
只有一个小问题.
只有一个小问题.
var person = function() { this.firstName = ""; this.lastName = ""; } person.prototype.showFullName = function () { console.log(this.firstName + " " + this.lastName); } var perObj = new person(); perObj.firstName = "Penelope"; perObj.lastName = "Barrymore"; perObj.showFullName();
考虑到对象,
var person = function() { this.firstName = ""; this.lastName = ""; }
当我使用这个对象来调用该对象时,
var perObj = new person();
这是类似于构造方式的事情吗?
一时代码
var perObj = new person();
this.firstName = ""; this.lastName = "";
还有在我正在研究的博客之一,如果文件名是Samplescript.js,如果一个函数是使用与这个名称相同的名称,就像var Samplescript = function(){},这个函数会被认为是一个构造函数吗?
请澄清我这个
即使理论上的事情很清楚,我在建构者方面也没有得到任何令人满意的答案,在这个例子中,它的写作方式很清楚.
解决方法
首先这个人是一个常规的JavaScript函数.当你打电话,当然,线条:
this.firstName = ""; this.lastName = "";
被执行.构造函数的功能比JS语言中真正存在的一个概念是一个概念.您需要通过调用新的MyCtr()来创建新的类似对象的构造函数.同时,您需要定期的功能来封装逻辑块,并使其在不同的地方可重用,而无需复制/粘贴代码.
您可以使用JavaScript中的所有函数作为构造函数.只需在函数调用表达式前添加新的关键字.这个事情改变了函数执行的上下文.没有新的功能是针对全局对象(浏览器中的窗口)执行的.而这个变量里面的函数是指上下文.
并不是每个功能都准备好成为一个构造函数.通常,构造函数正在使用此变量执行某些操作,该变量是对新MyCtr()调用期间创建的对象的引用.此外,构造函数从不返回值.
让我们看几个例子(您可以直接在浏览器的控制台中执行):
function foo() { this.a = 1; } foo(); // using function as a regular function. Ctx is window. console.log(window.a); // prints "1" foo.call(window); // explicitly specify execution ctx. The same as just foo() call var instance = new foo(); // using foo as a constructor console.log(instance.a); // prints "1" // actually you can do it without new keyword var instance = {}; // manually create new object foo.call(instance); // manually call foo against this object console.log(instance.a); // prints "1" // However,the code above is not strictly equivalent to the code using new. // It omits the concept of prototype,but it's enough for our current task.
关于功能和文件. Java中没有这样的东西,每个类都必须放在单独的文件中.您可以将所有的功能放在一个文件中,然后将其用作构造函数.但是,最佳做法是在每个文件(称为模块)中驻留一个构造函数(按类读取).