12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- <script>
- /*
- 创建一个Person构造函数
- -在Person构造函数中,为每一个对象都添加了一个sayName方法,
- 目前我们的方法是在构造函数内部创建的,
- 构造函数每执行一次就会创建一个新的sayName方法
- 也就是说所有实例的sayName都是唯一的.
- 这样就导致了构造函数执行一次就会创建一个新的方法,
- 执行一万次就会创建一万个新的方法,而一万个方法都是一模一样的
- 这是完全没有必要的,完全可以使所有的对象共享同一个方法
- */
- function Person(name,age,gender){
- this.name = name;
- this.age = age;
- this.gender = gender;
- //向对象中添加一个方法
- this.sayName = fun;
- }
- //将sayName方法在全局作用域中定义
- /*
- 将函数定义在全局作用域,污染了全局作用域的命名空间
- 而且定义在全局作用域中也很不安全
- */
- function fun(){
- console.log('hello,大家好,我是'+this.name);
- }
- //创建一个Person的实例
- var per = new Person("孙悟空",28,"男");
- var per2 = new Person("猪八戒",38,"男");
- per.sayName();
- per2.sayName();
- console.log(per.sayName == per2.sayName);
-
- //创建一个Person的实例
- // var per = new Person("孙悟空",28,"男");
- // var per2 = new Person("猪八戒",38,"男");
- // // per2.sayName();
- // console.log(per.sayName == per2.sayName);
- </script>
- </head>
- <body>
-
- </body>
- </html>
|