gpt4 book ai didi

Javascript 创建对象

转载 作者:行者123 更新时间:2023-11-30 06:03:31 25 4
gpt4 key购买 nike

我正在创建一个 javascript 对象,它将存储有关登录我网站的用户的信息(以便于访问),但对我来说,很难理解在 javascript 中创建对象的方法。我已经看到使用原型(prototype)方式的示例,以及其他使用闭包方式的示例,我决定继续使用闭包,因为我只需要该对象的单个实例,所以不要有很大的开销。

我想知道我做的是否正确,如果有任何方法可以改进我的代码,这是我的代码:

(function(window){
var mysite = (function() {
var me = this;

return { //public interface
init : function(userInfo){
me.user = userInfo;
return this;
},
sayHello : function(){
return 'Hello, my name is ' + me.user.name + ' and I am ' + me.user.age + ' years old.';
}
}
}());

window.mysite = function(userInfo){
return mysite.init(userInfo);
}
})(window);

var mysite = mysite({name : 'Jonathan', age : 17});
mysite.sayHello();

编辑#1

如果我想在主对象MySite中添加子对象,并且这些子对象有自己的方法和属性,以及访问主对象(MySite)的属性和方法,我想做这样的事情:

mysite.timezone.calculeUserTimezone();

如何进行?

最佳答案

使用原型(prototype)

(function(window) {
var MySite = function(opt) {
this.user = opt;
};

MySite.prototype.sayHello = function() {
return 'Hello, my name is ' + this.user.name + ' and I am ' + this.user.age + ' years old.';
};

window.mysite = function(options) {
return new MySite(options);
}
})(window);

var a = mysite({
name: 'Jonathan',
age: 17
});
console.log(a.sayHello());

我会改用原型(prototype)方法。您没有利用闭包,所以这种方式更简洁。

Live Example

使用闭包

(function(window) {
var MySite = function(opt) {
var user = opt;

this.sayHello = function() {
return 'Hello, my name is ' + user.name + ' and I am ' + user.age + ' years old.';
}
};

window.mysite = function(options) {
return new MySite(options);
}
})(window);

var a = mysite({
name: 'Jonathan',
age: 17
});
console.log(a.sayHello());

Live Example

关于Javascript 创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6732616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com