<!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>