自知其無知
不懂,慢慢懂。
BlogJava
首頁
新隨筆
新文章
聯(lián)系
聚合
管理
posts - 2,comments - 2,trackbacks - 0
<
2025年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
1. 我要讀書。
2. 路.慢慢走
莫心急。
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
給我留言
查看公開留言
查看私人留言
隨筆檔案
(2)
2009年11月 (2)
文章分類
(109)
Ajax(3)
Java(2)
Java Web(23)
JavaScript(36)
My SQL
Oracle
SQL Server(1)
Tomcat(1)
人生感悟(17)
生活常識(1)
電腦常識(24)
設計與思考(1)
文章檔案
(89)
2008年12月 (89)
搜索
最新評論
1.?re: 仿 hao123 的郵箱登陸
很好
--王立芹
2.?re: 比較經(jīng)典的一個問題。 - 局域網(wǎng)內(nèi)設置不同用戶對不同文件夾的訪問權限
你好 我也需要這方面的資料 我弄了很久都沒弄好,可不可以幫我弄下!!
我qq 46452150 希望聯(lián)系。
ps: 我單位的情況和你的一樣
--11
閱讀排行榜
1.?Pic(282)
2.?love(280)
評論排行榜
1.?love(0)
2.?Pic(0)
當存在相同的變量以及方法時,js 調用順序
<
script type
=
"
text/javascript
"
>
Object.extend
=
function
(destination,source)
{
for
(property
in
source)
{
alert(source[property]);
destination[property]
=
source[property];
}
return
destination;
}
Object.prototype.extend
=
function
(object)
{
return
Object.extend.apply(
this
,[
this
,object]);
}
function
base()
{}
base.prototype
=
{
initialize:
function
()
{
this
.oninit();
//
調用了一個虛方法
}
}
/**/
/*
如果要讓下面的代碼繼續(xù)運行,那么這一句必須被注釋掉,也就是我們的 base 類添加了這個方法后,
class1 在進行 extend (繼承) 時,會報錯。為什么?
*/
base.prototype.oninit
=
function
()
{
alert('方法 oninit() 被調用');
}
var
base
=
new
base();
//
base 被實例化了(關鍵點是,只要在調用的時候,oninit()方法被定義出來了就行!)
base.oninit();
/**/
/*
*/
//
讓一個 class 繼承于 base 并實現(xiàn)其中的 oninit 方法
function
class1()
{}
class1.prototype
=
(
new
base()).extend(
{
oninit :
function
()
{
//
實現(xiàn)抽象基類的 oninit 虛方法
//
oninit 函數(shù)實現(xiàn)
}
}
);
//
問題: 為什么 base 中定義了,并實現(xiàn)了 oninit 方法后,進行 繼承后,會產(chǎn)生錯誤?
/**/
/*
當然從語義上面來講,繼承后,肯定是對抽象方法的實現(xiàn)。但是,為什么語法上有這個限制,
而且,我們應該知道,子類是可以對父類方法進行重寫的。或許有人站出來說,我將 java 與 js
弄混淆了,但是,請注意,我這只是為了發(fā)現(xiàn)問題,請告訴我,為什么?
*/
/**/
/*
一個神奇的解決方法:
1. 用 editplus 打開
2. 找到 var base = new base(); 這個標準的在39 行 以及 base.oninit();
3. 將 變量 base 改為 任何其他的變量,比如:
var ba = new base(); ba.oninit();
問題解決完畢!!
也就是說, js 是首先搜索當前作用域對象的變量,然后再查找方法塊的!!!
比如先查找 window.base 變量,再查找 window.base() 方法,
這樣的話,
下面的 class1.prototype = (new base()).extend{
}
這里的 new base() 就是先將 base 當做變量,而不是方法!!!
關于這個問題,我們可以做一個簡單的測試!
var alert = alert(123); // 產(chǎn)生錯誤,頁面沒有任何顯示.
alert(333);
*/
</
script
>
posted on 2008-12-06 00:22
CopyHoo
閱讀(417)
評論(0)
編輯
收藏
所屬分類:
JavaScript
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
獲取當前節(jié)點 - 通過事件來獲取。
1、在Baidu空間中的發(fā)現(xiàn)
如何讓 href 失效。
JS類 檢測上傳圖片的大小,寬,高及格式檢查 - 封裝控件的思想
js 判斷上傳文件類型
javascript 弱弱的限制上傳文件大小(一定要服務器再判斷一遍。)
需要 fos 對象對客戶端上傳文件大小進行限制的例子
言簡意賅的一篇 js 操作 dom
這是一個一應俱全的實例
基礎:Javascript DOM操作: 子窗口操作父窗口table
Copyright ©2025 CopyHoo Powered By
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
资溪县
|
西城区
|
垫江县
|
滨州市
|
沾益县
|
外汇
|
边坝县
|
泰顺县
|
当雄县
|
林口县
|
沈丘县
|
香格里拉县
|
建阳市
|
高台县
|
巨鹿县
|
淳安县
|
济源市
|
东至县
|
泰州市
|
滦南县
|
吉林省
|
南陵县
|
五台县
|
铁岭县
|
白河县
|
江津市
|
泗洪县
|
同仁县
|
墨竹工卡县
|
建水县
|
汶上县
|
额济纳旗
|
会东县
|
修武县
|
黔东
|
通州市
|
大邑县
|
沙田区
|
和顺县
|
襄城县
|
南岸区
|