Я знаю, что могу создать функцию toString()
для объекта, чтобы каждый раз, когда он печатался или обрабатывался как строка, он сначала приводил в соответствие объект с этой функцией.
Можно ли сделать это напрямую, чтобы я мог использовать функции объекта String для объекта?
var SomeObject = function(a, b){
this.a = a;
this.b = b
}
SomeObject.prototype.toString = function(){
return [ this.a, this.b ].join(' ')
}
var objInstance = new SomeObject('this', 'that');
console.log(objInstance + '') // this that
console.log(("" + objInstance).split('')) // [ 't', 'h', 'i', 's', ' ', 't', 'h', 'a', 't' ]
console.log(objInstance.split()) // error
Можно ли сделать так, чтобы объект "вел себя" как строка, когда к нему вызывается функция String?
Другими словами, я бы хотел, чтобы objInstance.split()
имел тот же результат, что и ("" + objInstance).split('')
, а также objInstance.length
или objInstance.match(/something/)
и т.д. И т.д. И т.д.