我想知道是否有一种方法可以默认返回JS类的值,而不是引用类对象本身。比方说,我想包装一个字符串..
var StringWrapper = function(string) {
this.string = string;
};
StringWrapper.prototype.contains = function (string) {
if (this.string.indexOf(string) >= 0)
return true;
return false;
};
var myString = new StringWrapper("hey there");
if(myString.contains("hey"))
alert(myString); // should alert "hey there"
if(myString == "hey there") // should be true
doSomething();
现在我只想使用string
而不是myString
来获取myString.string
。这有可能吗?
我从console.log(myString)
中解除了问题,因为console.log
的行为是我最初没有考虑到的,这使问题复杂化,这并不意味着{{1} }}
答案 0 :(得分:8)
你的问题并不完全有意义,但听起来你想要实现.toString
界面:
var MyClass = function(value) {
this.value = value;
};
MyClass.prototype.toString = function() {
return this.value;
};
var classObj = new MyClass("hey there");
snippet.log(classObj);
snippet.log(classObj + "!");
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
使用ES6类语法:
class MyClass {
constructor(value) {
this.value = value;
}
toString() {
return this.value;
}
}
var classObj = new MyClass("hey there");
console.log(classObj);
console.log(classObj + "!");