[英]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!");
}();
}
我个人最喜欢的模式:
function Cat(){
console.log("Cat!");
}
Cat.prototype.constructor = Cat;
然后像这样创建它:
var foo = new Cat();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.