2012年12月13日木曜日

開発環境

『初めてのJavaScript 第2版』(シェリー・パワーズ著(Shelley Powers著)、武舎 広幸+武舎 るみ訳、オライリー・ジャパン、2009年、ISBN978-4-84312-225-5) の13章(JavaScriptのカスタムオブジェクトと例外処理)練習問第13-2を解いてみる。

その他参考書籍

13-2.

隠蔽する理由は、外部から意図しない変更が行われて、副作用等が起きるのを防ぐため。

コード(TextWrangler)

var Obj = function(){
  var name = "JavaScript!";
  this.p = function(){
    $('#pre0').append("Hello, " + name + "!\n");
  }
};
var obj = new Obj();
obj.p();
for(var p in obj){
  $('#pre0').append("obj[" + p + "] = " + obj.p + "\n");
}
try{
  if(obj.name === undefined) throw "obj.name: undefined";
    $('#pre0').append(obj.name + "\n");
} catch (e){
  $('#pre0').append(e + "\n");
  $('#pre0').append("varキーワードを使って宣言したデータメンバーにはアクセスできない。");
}


ちなみにPython3kの場合。

コード(TextWrangler)

sample.py

#!/usr/bin/env python3.3
# -*- coding: utf-8 -*-

class Obj:
    def __init__(self):
        # Pythonではデータの隠蔽はできない
        # とりあえず外部から変更したくないデータには先頭に下線をつけて目安に
        self._name = "Python"
    
    def p(self):
        print("Hello, {0}".format(self._name))

o = Obj()
o.p()
print(o._name)

入出力結果(Terminal)

a$ ./sample.py
Hello, Python
Python
$

0 コメント:

コメントを投稿