国产探花免费观看_亚洲丰满少妇自慰呻吟_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。這樣寫很

主站蜘蛛池模板: 巴彦县| 海淀区| 新沂市| 阜阳市| 蓝田县| 江达县| 南部县| 白沙| 钦州市| 凤台县| 米林县| 嘉定区| 南阳市| 红原县| 吉木乃县| 永修县| 禹州市| 邹平县| 西峡县| 滁州市| 平遥县| 玉门市| 八宿县| 嘉定区| 青州市| 游戏| 和林格尔县| 浦城县| 张家口市| 安康市| 孙吴县| 巩义市| 西林县| 内丘县| 云霄县| 寻乌县| 苗栗县| 安丘市| 虞城县| 房山区| 大连市|