gpt4 book ai didi

javascript - 我应该将对象属性传递给对象方法吗?

转载 作者:数据小太阳 更新时间:2023-10-29 04:20:37 25 4
gpt4 key购买 nike

我正在尝试学习面向对象的 javascript。使用一个简单的方法我想这样做:

var users = function(url){
this.url = url;
this.log = function(){
console.log(this.url);
}
}
var apiPoint = "https://www.zenconomy.se/api/admin/tracking?format=json"
var liveUsers = new users(apiPoint)
liveUsers.log()

但是,我了解到在使用普通函数时将变量传递给函数通常是个好主意,但是在对象中,这似乎有点笨拙。

var users = function(url){
this.url = url;
this.log = function(url){
console.log(url);
}
}
var apiPoint = "here is my url"
var liveUsers = new users(apiPoint)
liveUsers.log(liveUsers.url)

这两种方法都有效。假设 users.log 只需要用户类内部的属性,那么不同方法的优缺点是什么。

最佳答案

你刚才提到你正在尝试在 javascript 中学习 OOP,但实际上,请考虑 user 对象中的日志功能,如果没有用户实例,则没有 log方法之一。根据 C++ 或 C# 中的 OO,这不是同一个概念。在我看来,prototype 最能描述 oop,请执行以下操作:

var users = function(url){
this.url = url;
}
users.prototype.log = function(){
console.log(this.url);
}

这样,log不会存在于users的任何实例中,它存在于__proto__中,它是对的引用prototype 在任何情况下。这意味着当您创建实例时,它们共享所有功能,与 C++ 或 C# 相同。最后,你永远不应该在你的帖子中使用第二个示例,那不是面向对象的东西。

关于javascript - 我应该将对象属性传递给对象方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27486923/

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