簡體   English   中英

javascript對象中的類似php的構造函數

[英]php-like constructor in javascript object

是否可以在javascript中創建類似php的構造函數?

我的意思是,在php中您可以執行此操作

<?php

class myObj
{
    public function __construct()
    {
        print "Hello world!";
    }
}

//prints "Hello world!"
new myObj();

我一直在用JS玩這樣的想法。 那有可能嗎?

var myObj = function()
{
    this.prototype.constructor = function()
    {
        console.log("Hello world!");
    }
}

//I'd like to execute some actions without invoking further methods
//This should write "Hello world! into the console
new myObj();

簡單:

var myObj = function() {
    console.log("Hello world!");
}
new myObj();

沒有單獨的構造函數,這構造函數。 之間的差異myObj()new myObj()按要求解釋(不保證比我們的定制披薩更好))是以后會做怪異的東西與this 一個更復雜的示例:

var myObj = function() {
    this.myProperty = 'whadever';
}
new myObj(); //Gets an object with myProperty set to 'whadever' and __proto__(not that you should use it, use Object.getPrototypeOf()) set to 'myObj'.

它通過替換this新對象。 因此,它將創建一個新對象( {} ),並看到theNewAwesomeObject.myProperty = 'whatever' 由於沒有非原始返回值, theNewAwesomeObject將自動返回theNewAwesomeObject 如果僅執行myObj()而不使用new ,它將不會自動返回,因此返回值將為undefined

您可以具有立即調用的函數:

function MyObject() {
    var _construct = function() {
        console.log("Hello from your new object!");
    }();
}

http://jsfiddle.net/aqP9x/

我個人最喜歡的模式:

function Cat(){
   console.log("Cat!");
}
Cat.prototype.constructor = Cat;

然后像這樣創建它:

var foo = new Cat();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM