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

首頁 > 編程 > JavaScript > 正文

談?wù)凧avaScript中的幾種借用方法

2019-11-20 09:16:39
字體:
供稿:網(wǎng)友

前言

通過call()、apply()和bind()方法,我們可輕易地借用其它對(duì)象的方法,而無須從這些對(duì)象中繼承它。

在JavaScript中借用方法

在JavaScript中,有時(shí)可以重用其它對(duì)象的函數(shù)或方法,而不一定非得是對(duì)象本身或原型上定義的。通過 call()、apply() 和 bind() 方法,我們可輕易地借用其它對(duì)象的方法,而無須繼承這些對(duì)象。這是專業(yè) JavaScript 開發(fā)者常用的手段。

原型方法

在 JavaScript 中,除了不可更改的原始數(shù)據(jù)類型,如 string、number 和 boolean,幾乎所有的數(shù)據(jù)都是對(duì)象。Array 是一種適用于遍歷和轉(zhuǎn)換有序數(shù)列的對(duì)象,其原型上有 slice、join、push 和 pop 等好用的方法。

一個(gè)常用的例子是,當(dāng)對(duì)象和數(shù)組都是列表類型的數(shù)據(jù)結(jié)構(gòu)時(shí),對(duì)象可以從數(shù)組“借用”方法。最常借用的方法是 Array.prototype.slice

function myFunc() {   // error, arguments is an array like object, not a real array  arguments.sort();   // "borrow" the Array method slice from its prototype, which takes an array like object (key:value)  // and returns a real array  var args = Array.prototype.slice.call(arguments);   // args is now a real Array, so can use the sort() method from Array  args.sort(); } myFunc('bananas', 'cherries', 'apples');

借用方法之所以可行,是因?yàn)?call 和 apply 方法允許在不同上下文中調(diào)用函數(shù),這也是重用已有功能而不必繼承其它對(duì)象的好方法。實(shí)際上,數(shù)組在原型中定義了很多常用方法,比如 join 和 filter 也是:

// takes a string "abc" and produces "a|b|cArray.prototype.join.call('abc', '|'); // takes a string and removes all non vowelsArray.prototype.filter.call('abcdefghijk', function(val) {  return ['a', 'e', 'i', 'o', 'u'].indexOf(val) !== -1;}).join('');

可以看出,不僅對(duì)象可以借用數(shù)組的方法,字符串也可以。但是因?yàn)榉盒头椒ㄊ窃谠蜕隙x的,每次想要借用方法時(shí)都必須使用 String.prototype Array.prototype。這樣寫很

主站蜘蛛池模板: 三亚市| 江孜县| 巴彦县| 江安县| 万山特区| 龙岩市| 南岸区| 类乌齐县| 金坛市| 宣城市| 宜州市| 米易县| 宁都县| 鄂尔多斯市| 阳新县| 郑州市| 翼城县| 方正县| 长垣县| 龙江县| 邵阳市| 隆德县| 海宁市| 乌恰县| 乌兰察布市| 涞水县| 额济纳旗| 津南区| 太原市| 赤城县| 东源县| 上思县| 沅陵县| 通许县| 托克逊县| 新郑市| 吴川市| 张家川| 吉安县| 绍兴市| 弋阳县|