this关键字居然没有指回调用它那个对象? JavaScript作用域 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var 是全局变量。function调用,没有终止点。程序找不到回路,等于无效。所以出来的是你的第一个var。 //你应该知道预解析这个说法吧,一个函数在预解析时,就已经把里面的变量给固定了。//给你看一个最简单的例子,应该就能明白这点了。var length = 10;function fn1(){ alert(length);}function fn2(){ var length = 20; fn1();}fn2();//这里是弹出的length=10,//也就是说,函数内部的一些变量的值,是跟这个函数定义的位置有关//而和这个函数在哪里引用是无关的。再看下面这个例子function fn3(){ var length = 30 function fn1(){ alert(length); } fn1();}fn3();//这里弹出的length=30,//因为这里的fn1函数,会首先访问到fn3函数内部定义的这个fn1函数。//当然,这里都是按最基础的方法说的,所以你就可以想象为什么在你的代码中,会出现那样的结果了。//首先一点就是,全局的函数定义,其中的this值是指向window对象的,而全局变量,也是保存到window对象上面的。比如上面定义的length=10,这里就可以使用window.length获取到这个只。alert(window.length);//而函数内部的this指向呢,看下面这个例子function fn4(){ alert(this === window);}fn4();//true这里弹出值为true,也可以确认,this完全等于window对象的。//对比前面说的这些,再对比你代码中的写法,是否可以理解到我的意思呢?//当然,在JS中是可以改变一个函数内部的this指向的。所以,如果把你的代码进行下面的更改:var length = 10;function fn(){ alert(this.length)}var obj = { length: 5, method: function(fn) { fn.call(this) ; //这个this,就代表了,fn内部的this,是按照此时的this进行处理的 //而此时的this代表的是obj对象。 }}obj.method(fn); //5值就对了吧。//当然,还可以进行下面的更改,var data = { length:15}var obj2 = { length:25, method:function(fn){ fn.call(data); //这样写,那么fn函数内部的this就是代表了data对象,那么就可以获取到data对象中的length属性 }}obj2.method(fn); //15//感觉说的也差不多了,就这样吧。 var length = 10;function fn(){ alert(this.length); //this : window}var obj = { length: 5, method: function(fn) { fn() ; }}obj.method(window.fn); //10 CODE裡面不能加顏色…var length = 10;function fn(){ alert(this.length); //this : window}var obj = { length: 5, method: function(fn) { fn() ; }}obj.method(window.fn); //10 当然可以加。但你的基本概念没对。基础太弱了。windows的颜色定义也要定义范围取值和属性取值。而不是简单的span就行了。//后面是注释,给你查找自己的程序设计的逻辑错误用的,不在程序里运行的。 // 我这里说的方言是: javascriptvar length = 10; // 定义“全世界/全地球/全屏幕/全中国/的距离长度=10”function fn(){ // 在全世界/全地球/全屏幕/全中国/的某个城市里,建立一个想要运行的规则 fn(规则的执行和操作方式为缺省规则或缺省操作){ alert(this.length) // 显示(“我眼中的“全世界/全地球/全屏幕/全中国/的距离长度)} //某个城市我想要运行的规则fn结束(执行完毕)var obj = { // 定义“全部物体/全部物件/全部物理事物= { ”里面的所叙述的内容”“ length: 5,// 距离/长度:设定为5 method: function(fn) { // 使用的方法设定为:建立一个想要运行的规则(规则的执行和操作方式 为 (上面定义过的 fn 方式){ ”描述“ fn() ;// fn(规则的执行和操作方式为缺省规则或缺省操作) } // 描述 fn结束;} // 使用方法的设定建立运行结束///(((((//缺少两层局部设定运行结束的层级)obj.method(fn); //10 // 全部物体/全部物件/全部物理事物. 处理方式(使用上面定义过的fn规则)===得到结果,(全世界/全地球/全屏幕/全中国/的距离长度=)10 // 我这段js方言全部说完了。 // // 我这里说的方言是: javascriptvar length = 10; // 定义“全世界/全地球/全屏幕/全中国/的距离长度=10”function fn(){ // 在全世界/全地球/全屏幕/全中国/的某个城市里,建立一个想要运行的规则 fn(规则的执行和操作方式为缺省规则或缺省操作){ alert(this.length) // 显示(“我眼中的“全世界/全地球/全屏幕/全中国/的距离长度)} //某个城市我想要运行的规则fn结束(执行完毕)var obj = { // 定义“全部物体/全部物件/全部物理事物= { ”里面的所叙述的内容”“ length: 5,// 距离/长度:设定为5 method: function(fn) { // 使用的方法设定为:建立一个想要运行的规则(规则的执行和操作方式 为 (上面定义过的 fn 方式){ ”描述“ fn() ;// fn(规则的执行和操作方式为缺省规则或缺省操作) } // ”描述 “fn结束;} // 使用方法的设定/建立 运行结束///(((((//缺少两层局部设定运行结束的层级)==== 【楼主】:我找某你,某你现在在哪里?;【某你】:我不知道啊,你也没给我买返程的票啊;【楼主】:少废话,你在哪里?我不是让你去离我5的地方么?;【某你】:离你5的地方是什么地方?好大呀,我看不到你呀。我也不知道在具体什么位置。哦,我现在肯定在在全世界/全地球/全屏幕/全中国上。你不是给我圈过这个圈了么?obj.method(fn); //10 // 全部物体/全部物件/全部物理事物. 处理方式(使用上面定义过的fn规则)===得到结果(全世界/全地球/全屏幕/全中国/的距离长度=)10// // 楼主我的这段js方言全部说完了。 当然可以加。但你的基本概念没对。基础太弱了。windows的颜色定义也要定义范围取值和属性取值。而不是简单的span就行了。//后面是注释,给你查找自己的程序设计的逻辑错误用的,不在程序里运行的。你可能沒懂我說什麼這是回文編輯器的問題… 一般都用记事本或写字板写,利用word里面自带的替换/查找功能检查。然后找个带编译功能的浏览器检查。最后实在找不到才进编辑器。 不是,是你的设置有问题。span不是取值或预加载的。你最好单独做css 调用。 不过就是个作用域的问题(或是说谁是属主的问题)var length = 10;function fn(){ alert(this.length)}var obj = { length: 5, fn: fn, method: function(fn) { window.fn() ; //10 this.fn(); //5 }}obj.method(fn); 谁然你可按约定省略 window,但不能被自己的行为而迷惑了 讲的十分清楚明白,尤其是function fn4(){ alert(this === window);} fn4();//true这里弹出值为true,也可以确认,this完全等于window对象的。这里一下就扫清我的疑惑。非常感谢上面各位答主为我解惑。 Jquery为多级下的标签添加click事件 如何js判断图片大小~~ 用js在关闭整个浏览器时弹出一个提示? 求一个控制图片缩放的函数,急急急。。。。 js好有用吗?在什么样的企业js好可以拿高薪?js有什么认证考么?js发展要注重些什么? js文件中 能够嵌入 vbs脚本么? 怎么写? 如何做个浮动的报表表头???------------给个提示就行 JS中有没有实现下面功能的函数? 我问秋水一个问题? 求助,关于jQuery里onclick事件 求助,js判断输入框自动获取微视视频 还原JS代码
//给你看一个最简单的例子,应该就能明白这点了。
var length = 10;
function fn1(){
alert(length);
}function fn2(){
var length = 20;
fn1();
}
fn2();//这里是弹出的length=10,
//也就是说,函数内部的一些变量的值,是跟这个函数定义的位置有关
//而和这个函数在哪里引用是无关的。再看下面这个例子function fn3(){
var length = 30
function fn1(){
alert(length);
}
fn1();
}
fn3();//这里弹出的length=30,
//因为这里的fn1函数,会首先访问到fn3函数内部定义的这个fn1函数。//当然,这里都是按最基础的方法说的,所以你就可以想象为什么在你的代码中,会出现那样的结果了。//首先一点就是,全局的函数定义,其中的this值是指向window对象的,而全局变量,也是保存到window对象上面的。比如上面定义的length=10,这里就可以使用window.length获取到这个只。alert(window.length);//而函数内部的this指向呢,看下面这个例子
function fn4(){
alert(this === window);
}fn4();//true这里弹出值为true,也可以确认,this完全等于window对象的。//对比前面说的这些,再对比你代码中的写法,是否可以理解到我的意思呢?//当然,在JS中是可以改变一个函数内部的this指向的。所以,如果把你的代码进行下面的更改:
var length = 10;
function fn(){
alert(this.length)
}
var obj = {
length: 5,
method: function(fn) {
fn.call(this) ;
//这个this,就代表了,fn内部的this,是按照此时的this进行处理的
//而此时的this代表的是obj对象。
}
}
obj.method(fn); //5值就对了吧。//当然,还可以进行下面的更改,var data = {
length:15
}var obj2 = {
length:25,
method:function(fn){
fn.call(data);
//这样写,那么fn函数内部的this就是代表了data对象,那么就可以获取到data对象中的length属性
}
}
obj2.method(fn); //15//感觉说的也差不多了,就这样吧。
function fn(){
alert(this.length); //this : window
}
var obj = {
length: 5,
method: function(fn) {
fn() ;
}
}
obj.method(window.fn); //10
var length = 10;
function fn(){
alert(this.length); //this : window
}
var obj = {
length: 5,
method: function(fn) {
fn() ;
}
}
obj.method(window.fn); //10
windows的颜色定义也要定义范围取值和属性取值。而不是简单的span就行了。//后面是注释,给你查找自己的程序设计的逻辑错误用的,不在程序里运行的。
// 我这里说的方言是: javascript
var length = 10; // 定义“全世界/全地球/全屏幕/全中国/的距离长度=10”
function fn(){ // 在全世界/全地球/全屏幕/全中国/的某个城市里,建立一个想要运行的规则 fn(规则的执行和操作方式为缺省规则或缺省操作){
alert(this.length) // 显示(“我眼中的“全世界/全地球/全屏幕/全中国/的距离长度)
} //某个城市我想要运行的规则fn结束(执行完毕)
var obj = { // 定义“全部物体/全部物件/全部物理事物= { ”里面的所叙述的内容”“
length: 5,// 距离/长度:设定为5
method: function(fn) { // 使用的方法设定为:建立一个想要运行的规则(规则的执行和操作方式 为 (上面定义过的 fn 方式){ ”描述“
fn() ;// fn(规则的执行和操作方式为缺省规则或缺省操作)
} // 描述 fn结束;
} // 使用方法的设定建立运行结束
///(((((//缺少两层局部设定运行结束的层级)
obj.method(fn); //10 // 全部物体/全部物件/全部物理事物. 处理方式(使用上面定义过的fn规则)===得到结果,(全世界/全地球/全屏幕/全中国/的距离长度=)10
// 我这段js方言全部说完了。
var length = 10; // 定义“全世界/全地球/全屏幕/全中国/的距离长度=10”
function fn(){ // 在全世界/全地球/全屏幕/全中国/的某个城市里,建立一个想要运行的规则 fn(规则的执行和操作方式为缺省规则或缺省操作){
alert(this.length) // 显示(“我眼中的“全世界/全地球/全屏幕/全中国/的距离长度)
} //某个城市我想要运行的规则fn结束(执行完毕)
var obj = { // 定义“全部物体/全部物件/全部物理事物= { ”里面的所叙述的内容”“
length: 5,// 距离/长度:设定为5
method: function(fn) { // 使用的方法设定为:建立一个想要运行的规则(规则的执行和操作方式 为 (上面定义过的 fn 方式){ ”描述“
fn() ;// fn(规则的执行和操作方式为缺省规则或缺省操作)
} // ”描述 “fn结束;
} // 使用方法的设定/建立 运行结束
///(((((//缺少两层局部设定运行结束的层级)==== 【楼主】:我找某你,某你现在在哪里?;【某你】:我不知道啊,你也没给我买返程的票啊;【楼主】:少废话,你在哪里?我不是让你去离我5的地方么?;【某你】:离你5的地方是什么地方?好大呀,我看不到你呀。我也不知道在具体什么位置。哦,我现在肯定在在全世界/全地球/全屏幕/全中国上。你不是给我圈过这个圈了么?
obj.method(fn); //10 // 全部物体/全部物件/全部物理事物. 处理方式(使用上面定义过的fn规则)===得到结果(全世界/全地球/全屏幕/全中国/的距离长度=)10
// // 楼主我的这段js方言全部说完了。
windows的颜色定义也要定义范围取值和属性取值。而不是简单的span就行了。//后面是注释,给你查找自己的程序设计的逻辑错误用的,不在程序里运行的。你可能沒懂我說什麼
這是回文編輯器的問題…
function fn(){
alert(this.length)
}
var obj = {
length: 5,
fn: fn,
method: function(fn) {
window.fn() ; //10
this.fn(); //5
}
}
obj.method(fn);
谁然你可按约定省略 window,但不能被自己的行为而迷惑了
讲的十分清楚明白,尤其是
function fn4(){
alert(this === window);
}
fn4();//true这里弹出值为true,也可以确认,this完全等于window对象的。这里一下就扫清我的疑惑。非常感谢上面各位答主为我解惑。