构造函数

  1. function Person(name, age) {
  2. this.name = name
  3. this.age = age
  4. }
  5. Person.prototype.sayHi = function(){
  6. console.log("My name is " + this.name) // 用this不能用箭头函数
  7. }
  8. person1 = new Person('jack', 19)
  9. person.sayHi()

函数自带prototype
ptototype自带constructor, 且是函数自身
生成的对象的proto里也有constructor,即其构造函数的prototype里的constructor

原型公式:
对象.proto=== 其构造函数.prototype

要看一个对象是由谁构造出来的就看他的proto里的constructor
对象.proto.constructor === 其构造函数.prototype.constructor

image.png

终极一问

  • window由谁构造?Window

image.png

  • window.Object由谁构造?Function

image.png

  • window.Function由谁构造?Function

image.png
所有函数都是window.Function构造的,
浏览器构造了Function,然后指定它的构造者是自己

class

  1. class Person{ // 不要括号
  2. constructor(name, age) { // 注意参数传给constructor
  3. this.name = name
  4. this.age = age
  5. }
  6. sayHi(){
  7. console.log("My name is " + this.name)
  8. }
  9. }
  10. person1 = new Person('jack', 19)
  11. person.sayHi()