Chủ Nhật, 18 tháng 3, 2012

__{ideal}__Javascript

//biến trong hàm không phân tán (vẫn là chính nó) khi gọi lại hàm.

function t1(m){
var d=[];
if(typeof m !=='object') d.push(m);
else
{
for(var i in m) t1(m[i]);
return d;
}
}
alert(t1(['a','b','c']).length);

//các biến trong hàm thuộc bản sao (instance) sẽ bị phân tán, khi truy cập lại hàm thông qua instance.
function lop1()
{
this.ham1(n){
var _array=[];
if(typeof n!='object') _array.push(n);
else for(var i in n) new lop1().ham1(n[i]);
}
}


//khi gọi lại hàm, thì các khu vực đều có số lần gọi bằng nhau.

function t1(m){
if(typeof m=='object')
{
for(var i in m) t1(m[i]);
}
alert('');
}
t1(['a','b']); ->gọi 3 lần alert('').

/*khi tạo instance thì toàn bộ thuộc tính, phương thức của lớp (hàm) tách biệt với thành phần thông thường có trong lớp. Note: nếu gọi thông thường thì từ khóa this không có tác dụng.
*/

function ham()
{
this.item1();
}


function lopA()
{
this.item1=function(){alert("Hello i'm item1");}
ham();
}

lopA();   //TH 1: Ok. Note: có thể sử dụng item1().
new lopA();   //TH 2: tạo instance. -> failure. Vì phương thức item1 tách biệt & thành phần thông thường ham không thể tìm thấy item1.

//javascript sử lý đối tượng ở nơi mà đối tượng tạo ra.

function b(){alert(y);}
function a()
{
var y='y';
b(); //lỗi vì nơi tạo hàm b ko biết biến y
}
a();

//

0 nhận xét:

Đăng nhận xét

 
Copyright © hoangit