ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# **创建函数** ~~~ 第一种(函数声明): function sum1(num1,num2){ return num1+num2; } 第二种(函数表达式): var sum2 = function(num1,num2){ return num1+num2; } 第三种(函数对象方式): var sum3 = new Function("num1","num2","return num1+num2"); ~~~ # javascript 对象的几种创建方式 第一种:Object 构造函数创建 第二种:使用对象字面量表示法 第三种:使用工厂模式创建对象 第四种: 使用构造函数创建对象 第五种:原型创建对象模式 第六种:组合使用构造函数模式和原型模式 ```javascript // 1,object构造函数方法 person=new Object(); person.name="Bill"; person.age=56; // 2, 对象字面量 var Person = {}; //相当于 var Person = new Object(); var Person = { name: 'Nike'; age: 29; } // 3, 工厂模式 function createPerson(name, age) { var o = new Object(); o.name = name; o.age = age; o.sayName = function() { alert(this.name); }; return o; } var person1 = createPerson("Nike", 29); // 4.构造函数方法 function Person(name, age) { this.name = name; this.age = age; this.sayName = function() { alert(this.name); }; } var person1 = new Person("Nike", 29); ``` 5,原型创建对象模式 使用原型创建对象的方式,可以让所有对象实例共享它所包含的属性和方法。 ~~~ function Person() {} Person.prototype.name = "Nike"; Person.prototype.age = 20; Person.prototype.jbo = "teacher"; Person.prototype.sayName = function() { alert(this.name); }; var person1 = new Person(); person1.sayName(); ~~~ 当为对象实例添加一个属性时,这个属性就会屏蔽原型对象中保存的同名属性。 ~~~ function Person() {} Person.prototype.name = "Nike"; Person.prototype.age = 20; Person.prototype.jbo = "teacher"; Person.prototype.sayName = function() { alert(this.name); }; var person1 = new Person(); var person2 = new Person(); person1.name = "Greg"; alert(person1.name); //'Greg' --来自实例 alert(person2.name); //'Nike' --来自原型 ~~~ ## 第六种:组合使用构造函数模式和原型模式 使用构造函数模式与原型模式结合的方式,构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性 ~~~ function Person(name, age, job) { this.name = name; this.age = age; this.job = job; } Person.prototype = { constructor: Person, sayName: function() { alert(this.name); }; } var person1 = new Person('Nike', 20, 'teacher'); ~~~