<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
function mysay()
{
console.log("hello world");
}
function Person(myName,myAge)
{
// let obj=new Object();//系统做的事情
// let this=obj;//系统做的事情
this.name=myName;
this.age=myAge;
this.say=mysay;//用mysay不输出
}
let obj1 = new Person("lnj", 34);
let obj2 = new Person("zs", 44);
console.log(obj1.say === obj2.say);
//这种方式解决了内存地址不一样的问题
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
let fns={
mysay:function()
{
console.log("cyg");
}
};

function Person(myName,myAge)
{
// let obj=new Object();//系统做的事情
// let this=obj;//系统做的事情
this.name=myName;
this.age=myAge;
this.say=fns.mysay;//用mysay不输出
}
let obj1 = new Person("lnj", 34);
let obj1 = new Person("zs", 44);

console.log(obj1.say === obj2.say);
//这种方式解决了内存地址不一样的问题
//用对象的方式解决了内存地址不一样的问题
/* let fns = {
test: function () {
console.log("test");
}
}
// 由于test函数都是属于同一个对象, 所以返回true
//new重名的对象会错的因为没有什么都一模一样的对象
console.log(fns.test === fns.test); // true
*/
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
// let fns = {
// mySay: function () {
// console.log("hello world");
// }
// }
function Person(myName, myAge) {
// let obj = new Object(); // 系统自动添加的
// let this = obj; // 系统自动添加的
this.name = myName;
this.age = myAge;
// this.say = fns.mySay;
// return this; // 系统自动添加的
}
Person.prototype={
//类名.原型
say:function()
{
console.log("hello world");
}
};
let obj1 = new Person("lnj", 34);

obj1.say();
let obj2 = new Person("zs", 44);
obj2.say();
console.log(obj1.say === obj2.say);
console.log(Person.prototype);//原型对象
console.log(Person);//类
</script>
</body>
</html>