JavaScript进阶(一)

本文深入探讨了JavaScript中创建对象的多种方法,包括使用new Object()、字面量创建、工厂模式、构造函数、原型模式以及混合模式。通过实例解析了每种方法的用法和特点,帮助开发者巩固和理解JavaScript对象创建的知识。
摘要由CSDN通过智能技术生成

JS进阶对象Object理解

初识篇:多种创建对象的方式

一、使用new Object()
  • 通过new字符直接创建一个对象,对象属性不变,在被调用时this指向被赋值的变量。
let obj1 = new Object();
obj1.age = 25;
obj1.getName = function (name) {
    console.log(name + ',' + this.age);
}
obj1.getName('java'); //java,25
二、使用隐式字面创建:直接使用{}创建
  • 这种方式比较直观,容易理解。
let obj2 = {};
obj2.name = 'go';
obj2.age = 20;
obj2.getnotice = function () {
    console.log(this.name + ',' + this.age);
}
obj2.getnotice(); // go,20
三、使用字面创建:直接在{...}中增加属性和方法
  • 容易理解、维护,也常用
let obj2 = {
    name: 'python',
    age: 29,
    getactive: function () {
        console.log(this.name + "," + this.age);
    }
}
obj2.getactive(); // python,29
四、使用工厂模式
  • 工厂模式就是将对象封装在一个函数内部,使其不被暴露,通过传参进行方法调用和获取属性值,通过return进行暴露对象。
function obj3(name, age) {
    let o = new Object();
    o.name = name;
    o.age = age;
    o.getmessage = function () {
        console.log(this.name + ',' + this.age);
    }
    return o;
}
obj3('javaScript', 25).getmessage(); //javaScript,25
五、使用构造函数创建
  • 通过instanceof可以知道每个实例的Object,是谁实例化的。
function obj4(name, age) {
    this.name = name;
    this.age = age;
    this.getinfrom = function () {
        console.log(this.name + ',' + this.age);
    }
}
let o4 = new obj4('html', '50');
o4.getinfrom(); //html,50
六、使用原型模式创建
  • 原型都共享了属性和方法,在实例化属性后,会覆盖原型属性,拥有自己的属性方法。
function obj5(){} //构造函数

obj5.prototype.name = 'apple'; // 通过prototype进行增加属性和方法
obj5.prototype.age = 44;
obj5.prototype.getinfo = function () {
    console.log(this.name + ',' + this.age)
}
let o5 = new obj5();
o5.getinfo(); // apple,44
七、使用混合模式【构造函数+原型模式】
  • 混合模式共享相同方法的引用,但它们又保证了自己的私有属性,节省了内存空间。
  • 构造函数用来定义实例属性,原型模式用定义方法和共享属性
//7.1 构造函数
function obj6(name, age) {
    this.name = name;
    this.age = age;
}

// 7.2 原型模式
obj6.prototype = {
    constructor: obj6,
    getalter: function () {
        console.log(this.name + ',' + this.age);
    }
}

let o6 = new obj6('c语言', 48);
o6.getalter(); // c语言,48

let o7 = new obj6('c++',45);
o7.getalter(); // c++,45
总结:

比较常见的创建对象的方法就这些,写文主要是加固自己对创建对象的理解,CSDN中有许多优秀的人把每一种方法都有详写,从中自己也get到了许多知识点

下一篇:对Object属性的解剖理解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值