objectcreate()

How to use Object.create()

函数声明和函数表达式的区别

函数声明 function fn(){}

函数表达式 const fn = function(){}先定义一个变量再赋值为函数

函数声明会在代码执行前预加载,而函数表达式不会

代码演示

 const res = sum(10,20)
 console.log(res)
//函数声明,会在代码执行器预加载
    function sum(x,y){
        return x+y
    }



//函数表达式不行
const sum=function sum(x,y)
    {
        return x+y
    }

new Object()和Object.create()的区别

{}等同于new Object(),原型是Object.prototype
Object.create(null)是没有原型
Object.create({…})可指定原型
代码演示

object.js
const obj1= {
    a:10,
    b:20,
    sum(){
        return this.a+ this.b
    }
}
const obj2 = new Object({
    a:10,
    b:20,
    sum(){
        return this.a + this.b
    }
})

console.log(obj1===obj2)//true

const obj3 = new Object({
    a:10,
    b:20,
    sum(){
        return this.a+this.b
    }
})
const obj4 = Object.create({})//没有prototype
const obj5 = new Object({})//有prototype
console.log(obj1===obj3)//false

const obj 6 =Object.create({
    a:10,
    b:20,
    sum(){
        return this.a + this.b
    }
})// 有__proto__创建一个空对象,将空对象的原型指向了传入的对象
cosnt obj7 = Object.create(obj1)

关于this的场景题

const User={
    count:1,
    getCount: function(){
        return this.count
    }
}
console.log(User.getCount())// 1
const func = User.getCount
console.log(func())//undefine    函数的this在执行的时候才知道