JavaScript学习—对象作用域
2012-06-19 10:57
113 查看
一、变量作用域
JavaScript变量按数据类型分:字符串(String),数值(Number),布尔值(boolean)。按作用域分:全局变量和局部变量
全局变量:最外层定义、未定义直接赋值、this的变量
x = 1; //x是全局变量
y = function(){ //y是全局变量
z = 2; //y是全局变量
this.o = 3; //o是全局变量
}
局部变量:用var定义的变量。声明在函数内部的变量则具有局部作用域,在函数的外部是不能直接访问的。
var x = 1; //x是局部变量
举例(1):
if (!("a" in window)){var a = 1;}
alert(a);
结果:跳出“undefined”框,预编译:global_object={a:undefined,}执行:activation_object={a:undefined,alert:undefined,}
举例(2):
var a = 12;
function a(x){return x*2;}
alert(a);
结果:跳出“function a(x){var x = 12;}”框,变量a被2次赋值。
举例(3):
function a(o,p,q){argument[2]=10;alert(q);}
a(1,2);
结果:跳出“undefined”框,形参q没有被赋值。
举例(4):
function a(){
var x=12;
y=13;
}
alert(y); //13
alert(x); //脚本错误
结果:第一次跳出“13”框,第二次出错
举例(5):
function add(num1,num2){var sum = num1+num2;}
var total = add(5,10);
作用域链如下:
二、JavaScript对象
1.创建对象:
var x = {var m=1;var n=2}; //直接创建对象x
var x.m = 1;var x.n = 2; //对属性和方法赋值创建对象
function y(m,n){this.m=m;this.n=n;} var x = new y(1,2); //创建构造函数,实例对象。
举例(1):
function A(){} //创建a对象,作用链如下:
1、创建一个对象(有constructor属性及[[Prototype]]属性),根据ECMA,其中[[Prototype]]属性不可见、不可枚举
2、创建一个函数(有name、prototype属性),再通过prototype属性引用刚才创建的对象
3、创建变量A,同时把函数的引用赋值给变量A
2.对象的属性和方法
对象的属性和方法支持4种不同的类型:
private property(私有属性),
dynamic public property(动态公有属性),
static public property/prototype property(静态公有属性或原型属性),static property(静态属性或类属性)。
举例(1):
function myclass(){
var x = 1; //私有属性
var this.z = 2; //动态公有属性
}
myclass.prototype.y = 3; //静态公有属性
myclass.o = 4; //静态属性
var a = new myClass();
alert(a.x); //undefined
alert(a.z); //2
alert(a.y); //3
alert(a.o); //undefined
alert(myclass.o); //4
JavaScript变量按数据类型分:字符串(String),数值(Number),布尔值(boolean)。按作用域分:全局变量和局部变量
全局变量:最外层定义、未定义直接赋值、this的变量
x = 1; //x是全局变量
y = function(){ //y是全局变量
z = 2; //y是全局变量
this.o = 3; //o是全局变量
}
局部变量:用var定义的变量。声明在函数内部的变量则具有局部作用域,在函数的外部是不能直接访问的。
var x = 1; //x是局部变量
举例(1):
if (!("a" in window)){var a = 1;}
alert(a);
结果:跳出“undefined”框,预编译:global_object={a:undefined,}执行:activation_object={a:undefined,alert:undefined,}
举例(2):
var a = 12;
function a(x){return x*2;}
alert(a);
结果:跳出“function a(x){var x = 12;}”框,变量a被2次赋值。
举例(3):
function a(o,p,q){argument[2]=10;alert(q);}
a(1,2);
结果:跳出“undefined”框,形参q没有被赋值。
举例(4):
function a(){
var x=12;
y=13;
}
alert(y); //13
alert(x); //脚本错误
结果:第一次跳出“13”框,第二次出错
举例(5):
function add(num1,num2){var sum = num1+num2;}
var total = add(5,10);
作用域链如下:
二、JavaScript对象
1.创建对象:
var x = {var m=1;var n=2}; //直接创建对象x
var x.m = 1;var x.n = 2; //对属性和方法赋值创建对象
function y(m,n){this.m=m;this.n=n;} var x = new y(1,2); //创建构造函数,实例对象。
举例(1):
function A(){} //创建a对象,作用链如下:
1、创建一个对象(有constructor属性及[[Prototype]]属性),根据ECMA,其中[[Prototype]]属性不可见、不可枚举
2、创建一个函数(有name、prototype属性),再通过prototype属性引用刚才创建的对象
3、创建变量A,同时把函数的引用赋值给变量A
2.对象的属性和方法
对象的属性和方法支持4种不同的类型:
private property(私有属性),
dynamic public property(动态公有属性),
static public property/prototype property(静态公有属性或原型属性),static property(静态属性或类属性)。
举例(1):
function myclass(){
var x = 1; //私有属性
var this.z = 2; //动态公有属性
}
myclass.prototype.y = 3; //静态公有属性
myclass.o = 4; //静态属性
var a = new myClass();
alert(a.x); //undefined
alert(a.z); //2
alert(a.y); //3
alert(a.o); //undefined
alert(myclass.o); //4
相关文章推荐
- 《Java编程思想》学习记录仪四 -- Java数组和作用域初步认识(第二章一切都是对象)
- Javascript 的词法作用域、调用对象和闭包--之深入理解(转)
- JavaScript学习:JavaScript对象的应用
- 【javascript】javascript中call及apply函数作用:主要实现将函数绑定到另外一个对象上去运行
- JavaScript学习--Item22 Date对象全解析
- javascript中函数的执行环境、作用域链、变量对象与活动对象
- JavaScript学习-模仿块级作用域
- javascript学习之void(0)的作用
- JavaScript基础学习之-自定义对象(2)
- 解析JavaScript面向对象概念中的Object类型与作用域
- JavaScript学习笔记(对象)
- JS基础学习第六天:JavaScript对象入门(构造函数和实例对象)
- JavaScript 学习笔记 (2) - 对象的三个重要概念
- javascript中对象学习
- Javascript学习1 - Javascript中的类型对象
- JavaScript_学习_8:数组Array 对象
- 轻松学习JavaScript十:JavaScript的Date对象制作一个简易钟表
- javascript学习笔记 - 变量、作用域和内存问题
- 【学习笔记】JavaScript中,构造函数、原型对象和实例的关系
- javascript中的数组对象以及json学习笔记