国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

關(guān)于js類的定義

2019-11-20 23:46:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
遇到的問(wèn)題,首先是js對(duì)象的封裝,js沒(méi)有提供類的機(jī)制,唯一的內(nèi)置類是function類,也就是說(shuō)所有的函數(shù)都是function類的實(shí)例化對(duì)象。不過(guò)依靠這個(gè)唯一的類我們可以模擬定義一個(gè)新的類。
首先想到的,是直接用function生成定義完整的類:
復(fù)制代碼 代碼如下:

function myClass(arg,...)
{
this.attributeName;
this.functionName = function(){};
}

不過(guò)這樣有一個(gè)問(wèn)題,每當(dāng)我new一個(gè)新的myClass實(shí)例的時(shí)候,內(nèi)部的function都會(huì)重新開(kāi)辟空間,返回引用給functionName。但這個(gè)和我們?cè)O(shè)想的類不一致,浪費(fèi)空間,而且理論上類的function應(yīng)該是共享的。

更合理的做法,一是在類外定義函數(shù),然后類內(nèi)將函數(shù)指針賦值給functionName,另一種是在類外myClass.prototype.functionName = function(){}。這兩種都是不錯(cuò)的選擇,其中第二個(gè)看起來(lái)更接近類的定義。
接下來(lái)var newObj = new myClass();大功告成。

關(guān)于js(二)無(wú)名函數(shù)
無(wú)名函數(shù),其中一個(gè)作用可能是生成新的函數(shù)對(duì)象的引用,主要是用于定義。
另一個(gè)用處就是針對(duì)js中一些無(wú)法含參的回調(diào)函數(shù)而言的。


明顯的例子就是setInterval,我想這是很多人頭疼的一個(gè)函數(shù),尤其是你想在回調(diào)函數(shù)中添加參數(shù)的時(shí)候。
而且最叫人頭疼的是,DHTML不是w3c規(guī)定的標(biāo)準(zhǔn),于是不同的瀏覽器給出的setInterval參數(shù)表還不一樣。。。
就我測(cè)試的兩款瀏覽器來(lái)說(shuō)(IE內(nèi)核,webkit內(nèi)核)
IE:setInvterval(function, msecond [,lang]);
chrome:setInterval(function, msecond [, pram1, pram2, ....]);
也就是說(shuō),chrome里面是允許對(duì)function添加參數(shù)的,參數(shù)表在最后邊。然而IE最后一個(gè)參數(shù)的作用是標(biāo)明所用的腳本語(yǔ)言種類,因?yàn)镮E除了js還支持vbs等其他的腳本語(yǔ)言。

為了解決兼容性,只好用到無(wú)名函數(shù)。。。
復(fù)制代碼 代碼如下:

function test(yourArg)
{
var arg = yourArg;
setInterval(function(){callback(arg)}, time);
}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 肇源县| 佛坪县| 三台县| 桃源县| 武鸣县| 华安县| 集安市| 黔西县| 乐东| 长宁县| 锡林郭勒盟| 汉沽区| 漳州市| 元氏县| 靖宇县| 金阳县| 贺州市| 灵川县| 垣曲县| 宣威市| 博客| 新郑市| 平顺县| 襄樊市| 吉林市| 海丰县| 汉阴县| 秦皇岛市| 昌邑市| 常德市| 绿春县| 德令哈市| 余干县| 黎川县| 呼和浩特市| 手游| 扶沟县| 华宁县| 大厂| 库伦旗| 丰原市|