什么是原型?
顾名思义,原型字面理解就是原来的类型或模型,这里可以理解为最初的函数模板.
对于有基于类的语言经验 (如 Java 或 C++)的开发人员来说,JavaScript有点令
人困惑,因为它是动态的,并且本身不提供一个class实现。(在 ES2015/ES6 中引
入了class关键字,但只是语法糖,JavaScript 仍然是基于原型的[prototype])。
1、JavaScript中所有的对象都是Object的实例,函数也是对象
Object.prototype
console.log(Object.prototype.constructor===Object);//true
console.log(Object.prototype.__proto===null);//true
typeof Object.prototype.__proto //'object'
Foo.prototype
console.log(Foo.prototype.constructor ===Foo);//true
function Foo(){}
const f =new Foo;
f.__proto__//内部原型属性
console.log(Foo.prototype===f.__proto__);//true
为什么用原型?
原型为了实现面向对象思想【封装、继承、多态】,继承原型对象,实现多态
例如:层层继承
function Person(){}
Person.prototype.getName='zhangsan';
Person.prototype.Age='22';
var Animal=function(){}
Animal.prototype=new Person();
Animal.prototype.address='南京'
Animal.prototype.Age='30';
var temp=new Animal;
console.log(temp.getName);//zhangsan
console.log(temp.address);//南京
console.log(temp.Age);//30
网友评论