2017-02-18 6 views
0

人間が読める文字列を返すようにオブジェクトを作ることはできますか?js:人間が読める文字列を返すオブジェクト

function hsl_obj(h, s, l) { 
    this.h = h; 
    this.s = s; 
    this.l = l; 
    this.__str__ = function() { 
     return "hsl(" + this.h + ", " + this.s + "%, " + this.l + ")"; 
    } 
} 

var badass = new hsl_obj(76, 64, 59); // #BADA55 
console.log(badass); // --> hsl(76, 64%, 59%) 
console.log(badass.h); // --> 76 
console.log(badass.s); // --> 64 
console.log(badass.l); // --> 59 

$("p").css("background-color", badass); 
$("#ph").html(badass.h); 
$("#ps").html(badass.d); 
$("#pl").html(badass.l); 

私はtoString__str__を変更し、だけではなく、badass.toString()を使用することができることを知っているが、私はこの方法が可能であるかどうかを知りたいです。 Pythonでは__str__メソッドと多少似ています。私はbadassを呼び出すとき

EDIT

は今のところ、それはhsl_obj {h: 76, s: 64, l: 59}を返します。

+3

多分 'JSON.stringify(obj);'? – mrlew

+0

質問が少し奇妙なので、同じことを言っていました:) – Janne

+0

文字列はいつ返されるべきですか? – guest271314

答えて

0

あなたは、私は任意のページでwindowをダンプそれのためのブックマークレットを持ってPrettyPrint.js

https://github.com/padolsey-archive/prettyprint.js

をしたいです。

javascript:!function(){var t=document.createElement("script");t.setAttribute("src","https://rawgit.com/padolsey-archive/prettyprint.js/master/prettyprint.js"),document.head.appendChild(t),t.onload=function(){var t=prettyPrint(window);document.body.innerHTML="",document.body.insertBefore(t,document.body.firstChild)}}(); 

enter image description here

0

ご質問一種の混乱で、それはあなたが、それは、あなたが文字列値を取得するための関数を呼び出すために望んでいない場合は、メソッドbadass.__str__()を呼び出して、あなたを提供してきたように動作しますこのよう__string__ためgetterを設定してみてくださいすることができます:私はここに混乱を考えています

function hsl_obj(h,s,l) { 
    this.h = h; 
    this.s = s; 
    this.l = l; 
} 
Object.defineProperty(hsl_obj.prototype, '__str__', { 
    get: function() { 
    return "hsl(" + this.h + ", " + this.s + "%, " + this.l + ")"; 
    } 
}) 

var badass = new hsl_obj(76, 64, 59); 
console.log(badass.__str__) // --> "hsl(76, 64%, 59)" 
0

することは、常に文字列を期待するにconsole.log()を期待しているということですが、それはどのようなタイプのANを受け入れますそれを表現しようとする。

オブジェクトを渡すと、そのオブジェクトが表示されます。 おそらくconsole.log(badass + '');を使用すると、期待していた結果が得られますか?

質問は混乱していますが、より具体的にする必要があると思います。 私はちょうど自分の方法で質問を解釈しています...

関連する問題