<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
function Person(myName,myAge)
{
this.name=myName;
this.age=myAge;
this.currentType="构造函数中的属性";
this.say=function()
{
console.log("构造函数里面的方法");
}
}
Person.prototype=
{
currentType:"原型里面的属性",
say:function()
{
console.log("原型里面的方法");
}
};
let obj1=new Person("cyg",20);
obj1.say();
console.log(obj1.currentType);
let obj2 = new Person("zs", 44);
obj2.say();
console.log(obj2.currentType);
/**
* prototype的特点:存在在原型对象里面的属性与方法可以被构造函数的所有对象所共享.
* 如果原型与构造函数的属性与方法相同,优先级执行的是构造函数里面的,如果没有到原型里面找.
*/
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
function Person(myName, myAge)
{
this.name = myName;
this.age = myAge;
}
let obj1 = new Person("lnj", 34);
/* 1.每个"构造函数"中都有一个默认的属性, 叫做prototype
prototype属性保存着一个对象, 这个对象我们称之为"原型对象"*/
console.log(Person.prototype);//构造函数里面的prototype指向了对象(原型对象)
/*2.每个"原型对象"中都有一个默认的属性, 叫做constructor
constructor指向当前原型对象对应的那个"构造函数"
*/
console.log(Person.prototype.constructor);//原型对象里面的constructor属性指向了函数(当前原型对象对应的那个"构造函数")
/*3.通过构造函数创建出来的对象我们称之为"实例对象"
每个"实例对象"中都有一个默认的属性, 叫做__proto__
__proto__指向创建它的那个构造函数的"原型对象"
*/
console.log(obj1.__proto__);//实例对象的__proto__指向了对象(构函数里面的原型对象)
</script>
</head>
<body>
</body>
</html>