JavaScript 当中的带参构造对象

JS对象构造与初始化
本文介绍了一种在JavaScript中创建并初始化对象的方法。通过在构造函数中直接调用初始化方法,实现了对象创建与配置的一体化操作。这种方法简化了对象使用前的准备工作。

工作中需要用到封装一个JS对象,但是又想在构造这个对象的时候直接进行初始化。

刚开始的想法是,在new出这个对象后再调用它的一个方法进行初始化。后发现如下方法即可:

function ArrayToHTML(array) {
    var a = new Array();  //目的是初始化此变量
    if (!ArrayToHTML.prototype.flag) {  
        ArrayToHTML.prototype.flag = true;
        ArrayToHTML.prototype.init= function(o) {
            a = o;
        };
    }
    this.init(array);  //对象构造时调用此方法
    /**
     * 获取下一级下拉框
     * @param pid 父ID
     */
    this.getOption = function(pid) {
        var options = "";
        for (var i = 0; i < a.length; i++) {
            if (a[i][2] == pid) {
                options += "<option value=" + a[i][0] + " title='" + a[i][1] + "'>" + a[i][1] + "</option>";
            }
        }
        return options;
    };
    
}
 
### 如何在编程中构造对象 #### 构造函数的概念 构造函数是一种特殊的成员函数,在创建对象时自动调用,主要用于初始化新创建的对象状态。不同编程语言对构造函数的支持方式有所不同。 --- #### C++ 中的构造函数 在 C++ 中,构造函数具有特定的名字,即类名相同,并且不返回任何值(包括 `void`)。以下是其主要特性: - **无返回类型**:构造函数不需要指定返回类型。 - **名称与类同名**:构造函数的名称必须与其所属的类名称一致[^1]。 ##### 默认构造函数 如果未显式定义构造函数,则编译器会提供一个默认构造函数。该构造函数不会执行任何操作,仅用于创建对象[^1]。 ```cpp class MyClass { public: MyClass() { // 默认构造函数 std::cout << "Default Constructor Called!" << std::endl; } }; int main() { MyClass obj; // 调用默认构造函数 } ``` ##### 数的构造函数 可以通过数的方式实现自定义初始化逻辑: ```cpp class Rectangle { private: int width, height; public: Rectangle(int w, int h) : width(w), height(h) {} // 初始化列表 void displayArea() const { std::cout << "Area: " << (width * height) << std::endl; } }; int main() { Rectangle rect(5, 10); // 使用构造函数 rect.displayArea(); } ``` ##### 拷贝构造函数 当通过已有的对象创建另一个对象时,会调用拷贝构造函数: ```cpp class Point { private: int x, y; public: Point(int a = 0, int b = 0) : x(a), y(b) {} Point(const Point& other) : x(other.x), y(other.y) { // 拷贝构造函数 std::cout << "Copy Constructor Called!" << std::endl; } void showPoint() const { std::cout << "(" << x << ", " << y << ")" << std::endl; } }; int main() { Point p1(3, 4); Point p2(p1); // 调用拷贝构造函数 p2.showPoint(); } ``` --- #### JavaScript 中的构造函数 JavaScript 中的构造函数通常是普通的函数,但通过 `new` 关键字调用时会被视为构造函数。此时,构造函数的行为如下: - 自动绑定 `this` 到新创建的对象。 - 如果没有显式的返回值,默认返回 `this` 表示的新对象[^3]。 ```javascript function Person(name, age) { this.name = name; // 绑定属性到当前对象 this.age = age; } Person.prototype.greet = function () { console.log(`Hi! My name is ${this.name} and I am ${this.age} years old.`); }; const person = new Person('Alice', 25); // 创建对象 person.greet(); // 输出问候语 ``` --- #### PHP 中的构造函数 PHP 提供了一个名为 `__construct()` 的魔术方法作为构造函数。每当创建一个新的对象实例时,都会自动调用此方法[^4]。 ```php <?php class User { public $name; public function __construct($username) { $this->name = $username; echo "User created with the name: {$this->name}\n"; } } $user = new User("John Doe"); // 调用构造函数 ?> ``` --- #### Python 中的构造函数 Python 使用 `__init__()` 方法作为构造函数。每次创建类的实例时,都会自动调用这个方法。 ```python class Car: def __init__(self, brand, year): # 构造函数 self.brand = brand self.year = year def info(self): print(f"This car is a {self.brand} from {self.year}") my_car = Car("Toyota", 2020) # 实例化对象 my_car.info() ``` --- #### 总结 无论哪种语言,构造函数的核心作用都是为了初始化对象的状态。具体语法可能因语言而异,但在大多数情况下都遵循类似的模式——通过某种机制(如关键字或约定俗成的方法名)触发构造过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值