Javascript 创建函数实例时是否执行代码?
嘿,伙计们,我是JS新手,想问一下我什么时候创建下面函数的实例,然后它的执行方式是否与我使用Javascript 创建函数实例时是否执行代码?,javascript,Javascript,嘿,伙计们,我是JS新手,想问一下我什么时候创建下面函数的实例,然后它的执行方式是否与我使用PageState()时相同?当我使用const page=new PageState()时会发生什么 函数PageState(){ 让currentState=newhomestate(); this.change=函数(状态){ 当前状态=状态; } } 常量页面=新页面状态() 当我使用constpage=newpagestate()时会发生什么 使用PageState的对象创建一个新对象。pro
PageState()
时相同?当我使用const page=new PageState()时会发生什么
函数PageState(){
让currentState=newhomestate();
this.change=函数(状态){
当前状态=状态;
}
}
常量页面=新页面状态()代码>
当我使用constpage=newpagestate()时会发生什么代码>
使用PageState的对象创建一个新对象。prototype
引用作为其原型,然后PageState
中的代码运行。PageState
中的代码创建一个新的homeState
对象和一个新的函数对象(用于change
属性)。(即change
函数不是由显示的代码执行的,而是可以通过page.change(/*…*/);
稍后执行。)尽管每次都会创建一个新的函数对象,但它将在任何现代JavaScript引擎上重用底层代码(本例中没有太多:-))。这个新函数是创建它的上下文的闭包,这意味着即使在PageState
返回后,它也可以访问currentState
局部变量
有关闭包的更多信息:
- 在我贫血的小博客上:
- 以下是:
我更改了代码以获得一个工作示例。自始至终都有一些解释
函数PageState(){
this.currentState=0;
this.change=函数(状态){
this.currentState=状态;
}
}
//创建包含函数页状态的变量
常量页面=新页面状态();
//访问页面的一个属性,本例为设置为0的整数
console.log(“当前状态的初始值:”+page.currentState)
//还可以将函数存储为属性
//您可以这样调用此函数:
结果=第页更改(1)
//我将结果保存在一个变量中,以便查看返回值(currentState)
console.log(“当前状态的更改值:”+page.currentState)
使用new
关键字调用函数时,您正在创建一个新对象。您可以通过this
向该对象添加属性和方法。您可以在此函数中创建局部变量,它们在创建的对象中不可用。我建议您查看模块模式
尝试时发生了什么?您可以阅读此内容了解更多信息注意,您不是在创建函数PageState的实例,而是创建一个构造函数为函数PageState的对象-即。。page()将不起作用。因为页面不是一个函数。如果你在做oop,你可能想看看ES6类。