面试题目
1、实现一个new操作符
// <!-- new操作符
// <!-- 1.创建一个空对象 -->
// <!-- 2.将空对象的原型指向构造函数的原型 -->
// <!-- 3.将空对象作为构造函数的上下文(改变this指向) -->
// <!-- 4.对构造函数的返回值处理判断 --> return Object对象时,new操作符返回return的数据
function Fn(age, name) {
this.age = age
this.name = name
return {
a: 1
}
}
function myNew(fn, ...reset) {
let obj = {}
Object.setPrototypeOf(obj, fn.prototype)
let result = fn.apply(obj, reset)
return result instanceof Object ? result : obj
}
console.log(myNew(Fn, 18, 'zs'));
2、数据类型检测的方式有哪些
1.判断基本数据类型用
typeof
因为Object
,Array
,Function
都会返回Object
2.判断引用数据类型用
instanceof
typeof
console.log(typeof 2); // number
console.log(typeof true); // boolean
console.log(typeof 'str'); // string
console.log(typeof []); // object
console.log(typeof function(){}); // function
console.log(typeof {}); // object
console.log(typeof undefined); // undefined
console.log(typeof null); // object
instanceof
console.log(2 instanceof Number); // false
console.log(true instanceof Boolean); // false
console.log('str' instanceof String); // false
console.log([] instanceof Array); // true
console.log(function(){} instanceof Function); // true
console.log({} instanceof Object); // true