创建的每个函数,解析器都会向函数中添加一个属性prototype,这个属性对应着一个对象就是我们所谓的原型对象。
函数作为普通函数调用prototype没有任何作用
当函数以构造函数的形式调用时,它所创建对象中都会有一个隐含的属性,指向该构造函数的原型对象,可以通过__proto__来访问该属性
function MyClass(){
}
MyClass.prototype.a = 123;
MyClass.prototype.sayName = function(){
alert("hello");
};
var mc = new MyClass();
console.log(MyClass.prototype); // Object
console.log(mc.__proto__); // Object
console.log(MyClass.prototype == mc.__proto__); // true
var mc2 = new MyClass();
console.log(MyClass.prototype == mc2.__proto__); // true
console.log(mc.a); // 123
console.log(mc2.a); // 123
mc.a = 456;
console.log(mc.a); // 456
console.log(mc2.a); // 456
mc.sayName(); // 弹框hello
function Person(name, age, gender){
this.name = name;
this.age = age;
this.gender = gender;
}
Person.prototype.sayName = function(){
console.log("Hello大家好,我是" + this.name);
};
var per = new Person("孙悟空", 18, "男");
var per2 = new Person("玉兔精", 16, "女");
per.sayName(); // Hello大家好,我是孙悟空
per2.sayName(); // Hello大家好,我是玉兔精
标签:__,console,log,mc,JavaScript,笔记,MyClass,prototype
From: https://www.cnblogs.com/zibocoder/p/17033587.html