JavaScript中的构造方法

在我的一个问题中,我得到以下代码作为答案之一.我现在对语言的理解已经来得更好了,
只有一个小问题.
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中没有这样的东西,每个类都必须放在单独的文件中.您可以将所有的功能放在一个文件中,然后将其用作构造函数.但是,最佳做法是在每个文件(称为模块)中驻留一个构造函数(按类读取).

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...