面试高频问题

56 阅读1分钟

1. JS相关

1 .1函数的prototype属性

  • 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象)

  • 原型对象中有一个属性constructor, 它指向函数对象

    // 1 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象) function fun() {

    } console.log(fun.prototype) // 2 原型对象中有一个属性constructor, 它指向函数对象 console.log(fun.prototype.constructor === fun) // true

  • 每个函数function都有一个prototype,即显式原型

  • 每个实例对象都有一个__proto__,可称为隐式原型

  • 对象的隐式原型的值为其对应构造函数的显式原型的值

    // 1 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象) function fun() {

    } console.log(fun.prototype) // 2 原型对象中有一个属性constructor, 它指向函数对象 console.log(fun.prototype.constructor === fun) // true

    // 3 每个实例对象都有一个__proto__,可称为隐式原型 var f = new fun() console.log(f.proto) // 4 对象的隐式原型的值为其对应构造函数的显式原型的值 console.log(f.proto === fun.prototype) // true

  • 函数的prototype属性: 在定义函数时自动添加的, 默认值是一个空Object对象

  • 对象的__proto__属性: 创建对象时自动添加的, 默认值为构造函数的prototype属性值

    function Fn() { // 内部语句: this.prototype = {}

    } // 创建实例对象 var fn = new Fn() // 内部语句: this.proto = Fn.prototype