1.prototype是什么
javascript的prototype是javascript的原型。
2.prototype的作用
可以产生可以共享的属性或者方法,产生的实例对象都可以访问得到他。
3.prototype的理解与使用
3.1 当创建一个函数的时候就会自动创建一个 prototype 属性
function Person(){};
console.log(Person.prototype)
在控制台打印出结果如下:
3.2 使用 prototype 往原型里面挂载共享的属性和方法
function Person(){};
// 挂载属性
Person.prototype.name = "张三";
// 挂载方法
Person.prototype.fn = function(){};
在控制台输出的记过如下:
prototype上挂载的属性和方法,函数和实例都是可以进行访问的
function Person(){};
Person.prototype.name="张三";
Person.prototype.fn = function(){
console.log("fnfnfnfnfn")
};
//方法进行调用
console.log(Person.prototype.name); // 张三
Person.prototype.fn(); // fnfnfnfnfn
// 实例进行调用
let person1 = new Perosn();
console.log(person1.name); // 张三
person.fn(); // fnfnfnfnfn
操作数组的方法都是挂载到 Array 的原型上面的
console.log(Array.prototype)
在控制台打印如下:
我们也可以往原型上面自定义自己的属性或者方法用来操作数组:
Array.prototype.aaa = "123123";
let arr = [];
let arr1 = new Array();
console.log(arr.aaa); // 123123
console.log(arr1.aaa); // 123123
3.3 关于 prototype 和 proto 的关系
prototype是javascript的原型属性,proto 是指针只是一个存在栈内存里面的一串地址字符串。
function fnn(){};
console.log(fnn.prototype);
在控制台输出如下:
可以看到 fnn.prototype 中存在构造函数 constructor会指向其构造函数,这个 proto 就是用来指向的。
用表达式表示为: fnn.prototype.constructor === fnn; // true
function fnn(){};
let a = new fnn();
console.log(a);
在控制台输出如下:
可以看到 a的__proto__ 指向实例化构造函数的 prototype原型
用表达式表示为: a.proto === fnn.prototype; // true
参考文章:https://www.cnblogs.com/xiaowin/p/11355404.html