麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

談談JavaScript中的幾種借用方法

2019-11-20 09:16:39
字體:
來源:轉載
供稿:網友

前言

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

在JavaScript中借用方法

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

原型方法

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

一個常用的例子是,當對象和數組都是列表類型的數據結構時,對象可以從數組“借用”方法。最常借用的方法是 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');

借用方法之所以可行,是因為 call 和 apply 方法允許在不同上下文中調用函數,這也是重用已有功能而不必繼承其它對象的好方法。實際上,數組在原型中定義了很多常用方法,比如 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('');

可以看出,不僅對象可以借用數組的方法,字符串也可以。但是因為泛型方法是在原型上定義的,每次想要借用方法時都必須使用 String.prototype Array.prototype。這樣寫很

主站蜘蛛池模板: 成年免费在线视频 | 天天色综合6 | 久久成人国产精品入口 | 午夜小视频免费观看 | 亚洲午夜久久久精品一区二区三区 | 永久免费不卡在线观看黄网站 | 天天操天天骑 | 电影av在线 | 在线观看中文字幕av | 亚洲一区在线免费视频 | 免费在线国产 | 欧美日韩亚洲国产 | bt 自拍 另类 综合 欧美 | 热99re久久免费视精品频软件 | 一级做a爱片久久毛片a高清 | 国产精选电影免费在线观看 | 欧美在线中文字幕 | 国产精品区一区二区三区 | 日韩视频一区二区在线观看 | 成人福利在线观看 | 欧美一级特黄a | 黄色一级毛片免费看 | lutube成人福利在线观看污 | 国产女王女m视频vk 中文日韩 | 国产精品久久久久久久四虎电影 | 九九热免费视频在线观看 | 精品中文字幕视频 | 成人福利在线看 | 九色一区二区 | 国产18成人免费视频 | 性欧美大战久久久久久久免费观看 | 国产精品成人一区二区三区电影毛片 | 日韩精品免费看 | 一区二区三区在线视频观看58 | 中文字幕在线网站 | 欧美一级特黄a | 亚洲啪 | 免费看毛片的网站 | 一级看片免费视频 | av免费在线网 | 在线看免电影网站 |