分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

js之对象创建方式

发布时间:2023-09-06 02:07责任编辑:赖小花关键词: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();

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

js之对象创建方式

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved