js 콜, apply, bid, instanceof 방법 을 수 동 으로 실현 합 니 다.
17439 단어 JS
call 방법
apply 방법
bid 방법
call 방법
/**
* caLl
*/
Function.prototype.mycall = function(context) {
//
context = context || window;
//
let args = [...arguments].slice(1);
//
context.fn = this;
//
let result = context.fn(...args);
// ,
delete context.fn;
return result;
}
function Test() {
console.log(this.name);
console.log(this.sex);
}
let obj = {
name: ' ',
sex: ' '
}
Test.mycall(obj)
실행 결과
적용 방법
/**
* apply
* apply
*/
Function.prototype.myapply = function(context) {
context = context || window;
context.fn = this;
let result;
if (arguments[1]) {
result = context.fn(...arguments[1]);
} else {
result = context.fn();
}
delete context.fn;
return result;
}
function fn(name, sex) {
this.name = name;
this.sex = sex;
console.log(this.name);
console.log(this.sex);
}
let obj = {};
fn.myapply(obj,[' ',' ']);
실행 결과
bind 방법
/**
* bind
*/
Function.prototype.mybind = function(context) {
if (typeof this !== 'function') {
return new Error(" ");
}
let _this = this; //
let args = [...arguments].slice(1);
return function F(...newArgs) {
//bind ,
if (this instanceof F) {
return new _this(...args,...newArgs);
} else {
return _this.apply(context,args.concat(newArgs));
}
}
}
function parent(sex) {
console.log(sex);
console.log(this.name);
}
let Son = {
name: 'zhangsan'
}
let son = parent.mybind(Son,' ');
son();
실행 결과
zhangsan
instanceof 판단 속성
/**
* instanceof
* instanceof __proto__
* true
*/
function myInstanceoF(left, right) {
//
let prototype = right.prototype;
left = left.__proto__;
while (true) {
if (left == null) {
return false;
} else if (left == prototype) {
return true;
}
left = left.__proto__;
}
}
function Hello(name) {
this.name = name;
}
let test = new Hello(' ');
let arr = new Array('33');
console.log(myInstanceoF(arr, Array));
console.log(myInstanceoF(test, Hello));
console.log(myInstanceoF(arr, Hello));
실행 결과
true
true
false
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.