js 對象外部訪問或者調用問題
更新時間:2008年11月27日 14:08:00 作者:
造成樓主的模糊的其實是this指向的問題,你可以用alert出this看看,他們分別指向的是什么,相信您就會明白了!
在您寫的那個c中的this其實指向的是c 而不是abc!
以下是我的代碼:
<script>
abc = function(){
this.a;
this.b;
}
abc.prototype = {
getData:function(){
var c = function(num){
alert(num);
this.b = num;
}
c('12345');
},
clearData:function(){
this.getData();
alert(this.b);
}
}
var d = new abc();
d.clearData();
</script>
這部分中:
var c = function(num){
alert(num);
this.b = num;
}
c('12345');
我想把得到的num傳給開始定義好的this.b; 但這樣是不行的,不知怎么寫一下可以? 現在的格式不能改,能改的只有 c = function(){ 這里邊的東西}
可以這樣理解:引用:
function functionName(arg){……};
functionName(argvalue);以這種形式使用函數,是大家最熟悉的。
“()”(括號)可以把包裹在其中的語句變成一個“名詞”。引用:
(function(形參){函數體})把一個匿名函數包裹在括號里,使它對于代碼的其他部分來說,就相當于是一個“名詞”。
于是,引用:
(function(形參){函數體})(實參)就和上面最普通的引用:
函數名(實參)的用法一樣容易理解了,是定義了一個匿名函數并且立即調用的意思。引用:
c = (function(which){return function(num){alert(num);which.b = num}})(this)定義了一個匿名函數并且立即調用,這個函數返回一個匿名函數,返回的函數被賦名為c。
這里把 this對象 作為實參傳遞給 形參which,就把 abc實例對象 的引用提供給內部的匿名函數了。
于是c就成為一個能夠訪問 abc實例對象 的函數了。
技術文,偶喜歡
也可以這樣寫
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
用bind方法
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
<script>
abc = function(){
this.a;
this.b;
}
abc.prototype = {
getData:function(){
var c = function(num){
alert(num);
this.b = num;
}
c('12345');
},
clearData:function(){
this.getData();
alert(this.b);
}
}
var d = new abc();
d.clearData();
</script>
這部分中:
var c = function(num){
alert(num);
this.b = num;
}
c('12345');
我想把得到的num傳給開始定義好的this.b; 但這樣是不行的,不知怎么寫一下可以? 現在的格式不能改,能改的只有 c = function(){ 這里邊的東西}
可以這樣理解:引用:
function functionName(arg){……};
functionName(argvalue);以這種形式使用函數,是大家最熟悉的。
“()”(括號)可以把包裹在其中的語句變成一個“名詞”。引用:
(function(形參){函數體})把一個匿名函數包裹在括號里,使它對于代碼的其他部分來說,就相當于是一個“名詞”。
于是,引用:
(function(形參){函數體})(實參)就和上面最普通的引用:
函數名(實參)的用法一樣容易理解了,是定義了一個匿名函數并且立即調用的意思。引用:
c = (function(which){return function(num){alert(num);which.b = num}})(this)定義了一個匿名函數并且立即調用,這個函數返回一個匿名函數,返回的函數被賦名為c。
這里把 this對象 作為實參傳遞給 形參which,就把 abc實例對象 的引用提供給內部的匿名函數了。
于是c就成為一個能夠訪問 abc實例對象 的函數了。
技術文,偶喜歡
也可以這樣寫
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
用bind方法
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
您可能感興趣的文章:
- JS 創(chuàng)建對象(常見的幾種方法)
- JavaScript 創(chuàng)建對象
- JavaScript 三種創(chuàng)建對象的方法
- ajax 異步獲取數據實現代碼 (js創(chuàng)建ajax對象)
- javascript轉換字符串為dom對象(字符串動態(tài)創(chuàng)建dom)
- Javascript創(chuàng)建自定義對象 創(chuàng)建Object實例添加屬性和方法
- js中創(chuàng)建對象的幾種方式示例介紹
- javascript創(chuàng)建createXmlHttpRequest對象示例代碼
- Jquery通過JSON字符串創(chuàng)建JSON對象
- javascript對象的創(chuàng)建和訪問
相關文章
JavaScript setinterval延遲一秒解決方案
這篇文章主要介紹了JavaScript setinterval延遲一秒解決方案,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-09-09bootstrap daterangepicker漢化以及擴展功能
這篇文章主要為大家詳細 介紹了bootstrap daterangepicker漢化以及擴展功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06JavaScript執(zhí)行環(huán)境及作用域鏈實例分析
這篇文章主要介紹了JavaScript執(zhí)行環(huán)境及作用域鏈,結合實例形式分析了JavaScript執(zhí)行環(huán)境及作用域鏈的相關概念、功能與使用技巧,需要的朋友可以參考下2018-08-08JavaScript中你不知道的Object.entries用法
大家應該都知道,Object.entries()方法返回一個給定對象自身可枚舉屬性的鍵值對數組,其排列與使用 for...in 循環(huán)遍歷該對象時返回的順序一致,這篇文章主要給大家介紹了關于JavaScript中你不知道的Object.entries用法的相關資料,需要的朋友可以參考下2021-10-10