• JavaScript 63 JavaScript 对象 63.6 JavaScript 对象构造器


    JavaScript

    63 JavaScript 对象

    63.6 JavaScript 对象构造器
    function Person(first, last, age, eye) {
        this.firstName = first;
        this.lastName = last;
        this.age = age;
        this.eyeColor = eye;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    用大写首字母对构造器函数命名是个好习惯。

    63.6.1 对象类型(蓝图)(类)

    以前的例子中,是有限制的,它们都只创建了一个单一的对象

    有时需要创建相同“类型”的许多对象的“蓝图”。

    创建一种“对象类型”的方法,是使用对象构造器函数

    在上面的例子中,函数 Person() 就是对象构造器函数。

    通过 new 关键词调用构造器函数可以创建相同类型的对象:

    var myFather = new Person("Bill", "Gates", 62, "blue");
    var myMother = new Person("Steve", "Jobs", 56, "green");
    
    • 1
    • 2

    在这里插入图片描述

    63.6.2 this 关键词

    在 JavaScript 中,被称为 this 的事物是代码的“拥有者”。

    this 的值,在对象中使用时,就是对象本身。

    在构造器函数中,this 是没有值的。它是新对象的替代物。 当一个新对象被创建时,this 的值会成为这个新对象。

    请注意 this 并不是变量。它是关键词。无法改变 this 的值。

    63.6.3 为对象添加属性

    为已有的对象添加新属性很简单

    myFather.nationality = "English";
    
    • 1

    新属性被添加到 myFather。不是 myMother,也不是任何其他 person 对象。

    63.6.4 为对象添加方法

    为已有的对象添加新方法很简单:

    myFather.name = function () {
        return this.firstName + " " + this.lastName;
    };
    
    • 1
    • 2
    • 3

    新方法被添加到 myFather。不是 myMother,也不是任何其他 person 对象。

    63.6.5 为构造器添加属性

    与向已有对象添加新属性不同,您无法为对象构造器添加新属性:

    Person.nationality = "English";
    
    • 1

    在这里插入图片描述

    如需向构造器添加一个新属性,必须添加到构造器函数:

    function Person(first, last, age, eyecolor) {
        this.firstName = first;
        this.lastName = last;
        this.age = age;
        this.eyeColor = eyecolor;
        this.nationality = "English";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这样对象属性就可以拥有默认值。

    63.6.6 为构造器添加方法

    构造器函数也可以定义方法:

    function Person(first, last, age, eyecolor) {
        this.firstName = first;
        this.lastName = last;
        this.age = age;
        this.eyeColor = eyecolor;
        this.name = function() {return this.firstName + " " + this.lastName;};
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    与向已有对象添加新方法不同,您无法为对象构造器添加新方法。

    必须在构造器函数内部向一个对象添加方法:

    function Person(firstName, lastName, age, eyeColor) {
        this.firstName = firstName;  
        this.lastName = lastName;
        this.age = age;
        this.eyeColor = eyeColor;
        this.changeName = function (name) {
            this.lastName = name;
        };
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    changeName() 函数把 name 赋值给 person 的 lastName 属性。

    myMother.changeName("Jobs");
    
    • 1

    在这里插入图片描述

    通过用 myMother 替代 this,JavaScript 可以获知目前处理的哪个 person。

    63.6.7 内建 JavaScript 构造器

    JavaScript 提供用于原始对象的构造器:

    var x1 = new Object();    // 一个新的 Object 对象
    var x2 = new String();    // 一个新的 String 对象
    var x3 = new Number();    // 一个新的 Number 对象
    var x4 = new Boolean();   // 一个新的 Boolean 对象
    var x5 = new Array();     // 一个新的 Array 对象
    var x6 = new RegExp();    // 一个新的 RegExp 对象
    var x7 = new Function();  // 一个新的 Function 对象
    var x8 = new Date();      // 一个新的 Date 对象
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Math() 对象不再此列。Math 是全局对象。new 关键词不可用于 Math。

    正如以上所见,JavaScript 提供原始数据类型字符串、数字和布尔的对象版本。但是并无理由创建复杂的对象。原始值快得多!

    请使用对象字面量 {} 代替 new Object()

    请使用字符串字面量 "" 代替 new String()

    请使用数值字面量代替 Number()

    请使用布尔字面量代替 new Boolean()

    请使用数组字面量 [] 代替 new Array()

    请使用模式字面量代替 new RexExp()

    请使用函数表达式 () {} 代替 new Function()

    var x1 = {};            // 新对象
    var x2 = "";            // 新的原始字符串
    var x3 = 0;             // 新的原始数值
    var x4 = false;         // 新的原始逻辑值
    var x5 = [];            // 新的数组对象
    var x6 = /()/           // 新的正则表达式对象
    var x7 = function(){};  // 新的函数对象
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    63.6.8 字符串对象

    通常,字符串被创建为原始值:var firstName = “Bill”

    但是也可以使用 new 关键词创建字符串对象:var firstName = new String(“Bill”)

    不应该把字符串创建为对象。

    63.6.9 数字对象

    通常,数值被创建为原始值:var x = 456

    但是也可以使用 new 关键词创建数字对象:var x = new Number(456)

    不应该把数值创建为对象。

    63.6.10 布尔对象

    通常,逻辑值被创建为原始值:var x = false

    但是也可以使用 new 关键词创建逻辑对象:var x = new Boolean(false)

    不应该把逻辑值创建为对象。

  • 相关阅读:
    【前端】Vue+Element UI案例:通用后台管理系统-Echarts图表准备:axios封装、mock数据模拟实战
    DFS搜索和输出所有路径
    堆 堆排序 TopK问题
    IDM中下载请求两次无法下载的解决办法
    CoreData/数据存储管理, CoreDataRelationships/关系型数据结构存储管理 的使用
    工具清单 - IDE工具
    vivo全球商城全球化演进之路——多语言解决方案
    【车载开发系列】UDS诊断---电控单元复位 ($0x11)
    threejs材质的贴图(四)
    Building Systems with the ChatGPT API
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/127662997