我有一个小问题。
在这种情况下你使用A或B?为什么? obj和self.obj完全一样。
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection();
var myPlugin = {
register: function (server, options, next) {
// Error happens here, should be able to see server.views()
console.log(server.views());
next();
}
};
myPlugin.register.attributes = {
name: 'myPlugin',
version: '1.0.0'
};
server.register( myPlugin, function(err) {
if (err) {
console.error('Failed to load a plugin:', err);
}
} );
server.start(function () {
console.log('Server running at:', server.info.uri);
});
答案 0 :(得分:5)
self.obj
指的是您所在班级的实例,并访问定义的obj 实例变量。引用obj
将引用函数范围内的命名参数。
class Test {
let obj = "Global"
func sampleFunction(obj: String) {
// A
print(obj)
// B
print(self.obj)
}
}
var t = Test()
t.sampleFunction("Internal")
将其粘贴到Playground中以进行演示,以帮助解释。
是否使用self
来引用实例变量是主观的,但是如果有另一个局部变量或命名参数与该范围中的实例变量同名 - 你必须< / strong>使用self
来区分示例中的内容。
总是使用self
来引用实例变量是一个很好的经验法则,这可以提高可读性并减少与范围内发生冲突的局部变量名相关的错误的可能性。