js中 slice 與 Array prototype slice 有什麼區別

時間 2021-05-14 10:46:41

1樓:Keita

Array.prototype.slice可以被重寫,.

slice實際用的是Array.prototype.slice,但不能顯式修改.

slice,中ownpropertity只有length乙個屬性

Object

.getOwnPropertyNames

(Array

.prototype)[

"length"

,"constructor"

,"toString"

,"toLocaleString"

,"join"

,"pop"

,"push"

,"reverse"

,"shift"

,"unshift"

,"slice"

,"splice"

,"sort"

,"filter"

,"forEach"

,"some"

,"every"

,"map"

,"indexOf"

,"lastIndexOf"

,"reduce"

,"reduceRight"

,"copyWithin"

,"find"

,"findIndex"

,"fill"

,"includes"

,"entries"

,"keys"

,"concat"

]Object

.getOwnPropertyNames()["length"]

2樓:擼碼客

本質上沒區別。

是Array的乙個例項

即:console.log(.__proto__===Array.prototype);//true

又因為:console.log(.__proto__.slice===.slice);//true

所以console.log(.slice===Array.prototype.slice);//true

同理:console.log(["a","b","c"].slice===Array.prototype.slice);

console.log([5,6,7].slice===Array.prototype.slice);

當然,肯定是有區別的,區別就是Array.prototype.slice定義了slice方法,而.slice是使用slice方法。

即,你可以console.log([5,6,8,9,10,11].slice(2,5));//[8,9,10]

你不能console.log(Array.prototype.slice(2,5));因為這樣只是返回乙個空陣列而已。

當然可以Array.prototype.slice.call([1,2,3,4,5,6,7,8,9],2,5),只是速度慢些。

jquery也有slice方法,雖然功能原理上差不多吧,但他跟原生js的slice不是乙個東西。

在jquery中他是這樣的:

jQuery.fn.slice=function ()

3樓:Jasin Yip

Array

.prototype

.foo

='bar'

"bar"

>Array

.prototype

.bar

=function

()function

()>Array

.prototype

.bar()[

foo:

"bar"

,Symbol

(Symbol

.unscopables):

Object

]從 ECMAScript 的規範中我們可以知道:

Array.prototypemethods are generic methods that are not dependent upon theirthis

Array

.prototype

.slice

.call([1

,2,3

,4,5

],1,4

)[2,

3,4]

js中let與for迴圈輸入問題,為什麼輸出結果如下?

kkkKKKi 因為物件是引用基本型別,你可以把它理解成每次呼叫的時候都是使用的同乙個物件,因為這幾個物件共用乙個記憶體位址,所以最後無非就是同乙個物件用了兩次而已。陣列物件用的都是同乙個物件,當然資料就是一樣的了 善思即行 這裡不涉及作用域相關,主要是涉及到對引用型別變數改變問題。按題主的想法,出...

如何在js中呼叫php

Shaopeng 大概是下面這樣,js不能呼叫PHP方法,但可以通過http request方式觸發php方法並得到response server.php name POST name password POST password result loginUser name,password ech...

為什麼 js 中的 getter setter 不支援 async?

啦啦啦我賣報的小行家 很難理解為什麼要支援async,這明明是兩碼事。getter setter的設計本意就是抽象出值獲取和設定操作,至於值是什麼,什麼時候能給,那是你拿值任務的事 如果不區分的一股腦加上去,請問你是不是還要處理異常,處理各種狀態,那是不是就違反了單一原則,說實話,本身給setter...