为什么可以't我使用'var'在构造函数函数中
Why can't I use 'var' in constructor functions?
这很有效:
function Question(questionTitle, answer0, answer1) {
this.questionTitle = questionTitle;
this.answer0 = answer0;
this.answer1 = answer1;
}
但事实并非如此:
function Question(questionTitle, answer0, answer1) {
var this.questionTitle = questionTitle;
var this.answer0 = answer0;
var this.answer1 = answer1;
}
它会出现错误"Uncaught SyntaxError:Unexpected token this"。使用var
有什么问题?即使不添加var
关键字,JavaScript也不能解释正在创建的新变量吗?
切线问题:当不使用var
时,它是否会将变量名添加到全局命名空间?
切线问题:它是否将变量名添加到全局命名空间中什么时候不使用var?
这似乎是你误解的根源。当您使用以下语法时:
function Question(questionTitle, answer0, answer1) {
this.questionTitle = questionTitle;
this.answer0 = answer0;
this.answer1 = answer1;
}
该函数中的每一行代码都会在this
指向的对象上添加或设置一个属性。只要this
不指向全局对象,而是指向某个其他对象,那么"否",它就不会向全局命名空间添加名称。它为this
指向的对象添加属性。一行代码,如:
this.questionTitle = questionTitle;
指示Javascript获取CCD_ 7所指向的对象。将名为questionTitle
的对象的属性设置为questionTitle
变量的值。如果这样的属性还不存在,那么创建它并赋予它这个值。
所以,如果你像这样使用这个功能:
var q1 = new Question(...);
然后,构造函数中的这三行代码只为q1
对象添加了三个属性它们对全局命名空间没有任何影响
这种语法并不是在您讨论的意义上创建新的变量。它在对象上创建新属性。在Javascript中,为对象分配属性时不使用var
。您只需使用object.property = value
语法分配属性,如果该属性不存在,则会为您创建它。
您的其他语法不能工作,因为它在Javascript中是非法语法。var
之后的标识符必须遵循一组语法规则,其中一条规则是它不能包含句点,因此它只是非法语法。
即使第二个示例的语法在某种程度上是允许的,它也将创建仅在构造函数函数范围内可用的局部变量,并且无论如何都不会在对象上创建属性。
不能执行var this.foo = 'bar';
,因为它在语法上没有任何意义。
-
var
声明了一个变量。 -
this
是指在其直接作用域内的调用对象。
例如:
function someObject(){
// We are assigning `someObject` its own property `foo`.
this.foo = 'bar';
}
与此不同:
function someObject(){
// We are assigning some variable within the scope of this function named `foo`
var foo = 'bar';
}
所以希望你能看到如何做到这一点。。。
function someObject(){
// Illegal
var this.foo = 'bar';
}
不起作用。
- ES6构造函数返回基类的实例
- 使用Google Visualization动态调用构造函数
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- javascript中对象构造函数中的var属性与this.properties
- 理解typescript中的构造函数接口
- 为什么构造函数不是构造函数
- JavaScript-的含义:var DndUpload=函数(inputElem){};
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 拦截对构造函数的调用
- 使用闭包共享构造函数参数
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 从js引擎的角度来看闭包和构造函数是如何工作的
- 如何使用此从对象访问构造函数
- “var”变量,“this”变量和“global”变量 - 在JavaScript构造函数中
- JavaScript 构造函数中的“var”变量会发生什么
- 为什么可以't我使用'var'在构造函数函数中
- 在javascript中的新方法中使用构造函数中的privat-var
- 构造函数的区别:var X = function (){}, var X = function X(){}和functi
- 改变“;var”;在创建新实例的构造函数闭包内部
- var platform=new PlatformJS给出构造函数错误