.call和symbol

代码展示:

let boj={

  name:"123"

}//先let 一个对象

function text(){

  console.log(this)//这次打印的this的结果是window全局对象

}

Function.prototype.mycall=function(thisobj,...args){//要想改变this指向必须去继承原型(接受的参数太多的话可以用...args)...args是剩余参数必须写在最后面

let fnc=this 

let s=symbol("and")//为了避免出现覆盖现象运用symbol数据类型 symbol具有唯一性是独一无二的

let ss=objcet.getownpropertysymbols(thisobj)//可以返回对象自有的Symbol属性,原型链上的属性不会被获取。

返回值是存储自有Symbol属性的数组

thisobj[s]=fnc

thisobj[s](args)

console.log(thisobj)

}

text.mycall(obj,1,2,3)

text.call(obj)

 

posted @ 2020-12-14 21:21  混混子  阅读(68)  评论(0)    收藏  举报