`
niuqiang2008
  • 浏览: 12668 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

window指代全局this

阅读更多
学习<王者归来>时遇到的问题 ...
看代码 :

----辅助内容

	function dwn(_a_)
	{
		document.write(_a_ + "<br/>") ;
	}


疑惑

function test()
	{
		this.aa = 10 ;
		return function()
		{
			return 1 ;
		}
	}
	
	var  aa = new test();
	var b = test();
	
	dwn( aa+'   ' +b )


结果是:10 function () { return 1; }

但如果代为:


function test()
	{
		this.aa = 10 ;
		return function()
		{
			return 1 ;
		}
	}
	
	var  a    = new test();
	var b = test();
	
	dwn( a +'   ' +b )


结果为:function () { return 1; } function () { return 1; }

疑惑中 ,应该返回的是第二种 ,为什么this的属性名定义的和外部一样时会出现这种问题....

在变一种提交方式 ...
把代码一改一下 ..

function test()
	{
		this.aa = 10 ;
		return function()
		{
			return 1 ;
		}
	}

	var b = test();  // (1)
	var  aa   = new test();  //(2)
	
	
	dwn( aa+'   ' +b )


执行的结果是 :function () { return 1; } function () { return 1; }

如此怪异的行为 ,我在FF调试下发现 , 在执行 (2)时 ,要从新进入test()函数,改写aa的值 ,
如果代码为
var  aa   = new test(); 
dwn(aa)
var b = test(); 
dwn(b) ;


也是预期的效果

我想这应该是全局变量名的问题 . 在test()函数中 this指代的是window对象 ,
在执行完  var  aa   = new test(); aa应该是 function(){...}
但在 var b = test()中 this.aa = 10 有从写了aa就出现了代码一的样式 ...
不知正确与否 , 望高手指正 ,
分享到:
评论

相关推荐

    跟我学习javascript的this关键字

    在全局执行上下文中,`this`指代的是全局对象。在浏览器中,全局对象是`window`。因此,在全局作用域中声明的变量和函数实际上是作为全局对象的属性和方法存在的。例如: ```javascript var name = "全局"; ...

    Javascript的this用法

    当我们在全局作用域(即非任何函数内部)使用`this`时,它指向全局对象(在浏览器环境中是`window`对象,在Node.js中则是`global`对象)。例如: ```javascript console.log(this); // 输出:Window {...} (浏览器...

    js老生常谈之this,constructor ,prototype全面解析

    this表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window; 如果在函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用。 我们还可以使用apply和call两个全局方法来改变函数中...

    JavaScript中几个重要的属性(this、constructor、prototype)介绍

    this this表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window; 如果在函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用。 我们还可以使用apply和call两个全局方法来改变...

    JavaScript类和继承 this属性使用说明

    this属性表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window; 如果在函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用。 我们还可以使用apply和call两个全局方法来改变...

    JavaScript中的全局对象介绍

    如果函数作为普通函数被调用,且不是作为某个对象的方法,那么在ECMAScript 3标准和ECMAScript 5标准的非严格模式下,this指代全局对象。而在ECMAScript 5的严格模式下,函数内的this会是undefined。可以通过特定的...

    浅谈JavaScript中的this指针和引用知识

    this是javascript的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。...//foo函数所有者是window,全局函数中this指代的是window对象(*******

    js this关键字_面向对象编程.pdf

    - **全局上下文中**:在非严格模式下,`this` 指向全局对象(在浏览器中通常是 `window`)。而在严格模式下(通过 `"use strict";` 指令启用),`this` 在全局作用域中未绑定时为 `undefined`。 - **函数调用中**...

    最新版TypeScript教程——15.14_构造函数和this(Av800627522,P15).rar

    1. 函数调用:如果`this`位于普通函数内部,它将默认指向全局对象(在浏览器中是`window`,在Node.js中是`global`)。 ```typescript function log() { console.log(this); } log(); // 输出全局对象 ``` 2. ...

    JavaScript 继承详解(二)

    this表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window; 如果在函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用。 我们还可以使用apply和call两个全局方法来改变函数中...

    JavaScript中的this基本问题实例小结

    在全局环境下,`this`总是指向全局对象,在浏览器中通常是`window`对象。当一个函数在非构造函数的情况下被调用,`this`也会指向`window`。但在严格模式(`use strict`)下,非构造函数调用的`this`将变为`...

    浅谈JavaScript 中的this

    每当函数被执行时,都会创建一个执行上下文,`this`就是这个上下文的一部分,用来指代当前执行环境的对象。 2. **作为普通函数在全局作用域中使用** 在全局作用域中,如果没有明确的上下文,`this`通常会指向全局...

    javascript面向对象之this关键词用法分析

    上述代码中,alert函数里的this指代window对象,因此能够调用到全局变量name。 接着,我们来看this在函数中的表现。当函数作为对象的方法被调用时,this指向该方法所属的对象。这一点在面向对象编程中极为关键,...

    javascript中的self和this用法小结

    在全局上下文中,this指向全局对象(在浏览器中是window,在Node.js中是global)。在函数内部,this的指向取决于函数是如何被调用的。例如: - 在普通函数调用中,this的值取决于严格模式的开启与否。在非严格模式...

    Javascript this指针

    1. 全局上下文中的this:在全局作用域中,"this"指代的是全局对象。在浏览器中,全局对象就是window对象。这意味着,如果你在一个全局函数中使用"this",那么它实际上指的是window对象。 示例: ```javascript var ...

    JavaScript中的this/call/apply/bind

    - 一般函数中,`this`指代全局对象。 - 对象方法中,`this`指代调用该方法的对象。 - 构造函数中,`this`指代新创建的实例。 - 箭头函数中,`this`不独立,而是继承自外层作用域的`this`,不受`new`操作符的影响...

    关于javascript中this关键字(翻译+自我理解)

    如果函数作为普通函数被调用,其this值将指向全局对象(在浏览器中是window对象),除非使用严格模式,此时this会指向undefined。 3. 如果函数作为对象的方法被调用,this的值将指向那个对象。 4. 通过new操作符...

    javascript与jquery中的this关键字用法实例分析

    这里使用了$(this),在函数内部,this指代的是window对象,因为src属性是在window对象上定义的。但是为了完整性,我们需要明确jQuery的$(this)操作通常在事件处理函数中使用,以获取当前触发事件的元素,如: ```...

Global site tag (gtag.js) - Google Analytics