js之对象创建方式

js中对象创建方式有多种,最常见的就是调用Object构造函数,下面我们来列举对象的创建的方式

一、Object构造

             var Dog = new Object();
             Dog.name = "peter";
             Dog.bark =function(){
             console.log(" my name is "+Dog.name);
             }
             Dog.bark();//输出my name is peter

此方法是最常见的生成方式,但不能指定想要的对象类型

二、字面量构造

               var Cat = {
                 name:"tony",
                 age :"5",
                bark : function(){
                    console.log("i am a cat" );
                 }
               }
               Cat.bark();

此方法是上面的补充,他与new Object()没有区别

三、工厂模式创建

               function createObj(name,age){
                    var obj = new Object();
                    obj.name = name;
                    obj.age = age;
                    obj.bark = function(){
                        console.log("hello i am createObj,i am "+obj.age+" old");
                    }
                    return obj; //返回一个obj
                }  

var obj = createObj("pony","33");
                  obj.bark();

此方法适合批量生成对象,避免代码重复,但问题和第一个一样,不能判断对象类型,因为都是基类Object

四、构造函数创建

                  function Person(name,age){
                      this.name = name;
                      this.age  = age;
                      this.bark = function(){
                          console.log("hello i am construct");
                      }
                  }
                  var child = new Person("sily","18");
                  console.log(child.name);

此方法中的new关键字很重要,首先他会在内部常见一个object赋给this 然后通过this绑定变量和方法,最后隐式的return this 出去。

此方法的缺点是每次创建对象的时候后都会生成相应的方法,浪费内存

五、原型创建

                  function Animal(){}
                  Animal.prototype.name = "peter";
                  Animal.prototype.age  =  10;
                  Animal.prototype.bark = function(){
                      console.log("hello, i am a prototype function");
                  }
                  var fish = new Animal();
                  fish.bark();

该方法创建的对象,都在原型链上,所有实例共享,也就是说,一旦有实例修改了该方法,则所有实例的该方法都会改变,但大多数时候我们还是需要私有方法和属性,说以一般都用原型构造这种组合模式来创建对象

原文地址:https://www.cnblogs.com/maoxiaodun/p/10012321.html

时间: 2024-10-09 15:16:32

js之对象创建方式的相关文章

第163天:js面向对象-对象创建方式总结

面向对象-对象创建方式总结 1. 创建对象的方式,json方式 推荐使用的场合: 作为函数的参数,临时只用一次的场景.比如设置函数原型对象. 1 var obj = {}; 2 //对象有自己的 属性 和 行为 3 // 属性比如: 年龄.姓名.性别 4 // 行为: 吃饭.睡觉.走路.讲课等... 动作 5 var obj2 = { 6 name: 'laoma', 7 age: 18, 8 sayHi: function(){ 9 console.log( name + 'say hi' )

javascript一种新的对象创建方式-Object.create()

原文地址:http://www.cnblogs.com/yupeng/p/3478069.html 1.Object.create() 是什么? Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不是一个子函数,可以传一个null,第二个参数是对象的属性描述符,这个参数是可选的. 例如: 1 function Car (desc) { 2 this.desc = desc; 3 this.col

js学习对象创建

Object.extend = function(destination, source) {for (var property in source) {    destination[property] = source[property];}return destination;} Prototype 对Object类进行的扩展主要通过一个静态函数Object.extend(destination, source)实现了JavaScript中的继承. 从语义的角度,Object.extend

JS中对象继承方式

JS对象继承方式 摘自<JavaScript的对象继承方式,有几种写法>,作者:peakedness 链接:https://my.oschina.net/u/3970421/blog/2872629 方式一:对象冒充 原理:构造函数使用this关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使Parent构造函数称为Children的方法,然后调用它.Children会收到Parent的构造函数中定义的属性和方法. *** //父类构造函数 var P

奇葩的对象创建方式(更新中)

1.日志对象的创建方式 public static final Logger  log =Logger.getLogger(需要产生日志文件的class对象); 2.httpClient对象的创建方式 CloseableHttpClient httpclient = HttpClients.createDefault(); 3.获取一个Http返回的对象 CloseableHttpResponse response = httpClient.execute(get);

【cocos2d-x 学习笔记 02】对象创建方式比较

1. 创建对象实例的方式比较 cocos2d-x中获取对象实例的方式与一般的C++编程方式有些不同,下面就是一段代码,比较了对象的创建.初始化和销毁过程二者不同的编写方式: 一般C++对象创建代码: Object *obj = new Object(arg1, arg2); delete obj; 一般C++对象在其构造函数中完成初始化操作,同时new出来的对象需要自己负责释放. cocos2d-x中对象创建代码: Object *obj = Object::create(); cocos2d-

js 对象的创建方式和对象的区别

js一个有三种方法创建对象,这里做一个总结. 1.对象直接量 所谓对象直接量,可以看做是一副映射表,这个方法也是最直接的一个方法,个人比较建议, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //创建简单对象 var obj1 = {}; //空对象 var obj2 = {   name: "ys",   age: 12 }; //创建复杂对象 var obj3 = {   name: "ys",   age

javascript对象创建及原型继承的研究

今天总结了下javascript关于原型继承和对象创建方面的东西,因为javascript的原型继承在使用传统面向对象语言开发的同学看来比较怪异,原型继承确实比传统OOP语言的继承理解和运用起来困难一些,当然个人觉得传统OOP的继承相对比较简单,因为中规中矩. 下面逐个的用示例说明javascript中对象创建方式,专业一点叫什么模式,主要有直接单个创建:工厂模式:提出方法类函数公用方式:构造函数模式:构造函数+原型方式:使用原型本质的方式构建(这种受过李站的<悟透javascript>一书的

浅析JS原型对象&amp;实例对象&amp;构造函数(转)

浅析原型对象,实例对象,构造函数的关系 原文地址:JS面向对象-原型对象,实例对象,构造函数的关系(http://blog.csdn.net/u014205965/article/details/45798861) 因为最根上的object拥有一个prototype属性,而js中所有的对象又都继承自object,所以js中所有的对象都拥有一个prototype属性,而在js中函数也是对象,所以js中每个函数也都有一个prototype属性. 例如:function Person(){...} 和