日期:2014-05-16 浏览次数:20427 次
javascript中的函数、对象
?
1. 在javascript中,函数是被当成一种数据类型,它可以被存储在一个变量、数组、对象中,可以被当作参数传递到另一个函数中。
函数就像是字符串和数字这样的的数据类型,它可以是其它对象的一个属性
?
2. 函数定义的三种方式:
?
function square(x) {?? return x*x;???}??? //function 语句
?
var square = function(x) { return x*x;}? //函数直接量? function literal
?
var square = new Function("x", "return x*x;");? //? 构造函数 不常用
?
?
3.javascript中的对象可以包含任何类型的属性,如数组、函数、其它对象等;
?eg:?????? document.myform.button??? //?? the button property of an object that is itself stored in the myform property of an object named document
?
当一个函数为一个对象的属性时,它被叫做方法,属性名即为其方法名;
?
在javascript中可以将对象当成是一种数组来操作(关联数组,associative arrays),这样就可以像数组访问其元素一样访问对象的属性了,如:
?
object.["propertyName"]
?
?
4.创建对象的几种方式
?? //常规方式
?var o = new Object( );
?var now = new Date( );
?
?创建完一个对象后,就可以使用或者是定义其属性了
var point = new Object( );
point.x = 2.3;?? // 此处是定义其属性了是先把对象创建出来了再去定义它的属性
??????????????????????? //?与java里面创建对象的方式很不一样,java里是先定义一个类,再根据那个类有什么构造函数创建一个对象
point.y = -1.2;
?
? //对象直接量
var point = { x:2.3, y:-1.2 };?? // 像这种方式创建对象并定义属性
// 嵌套
var rectangle = { upperLeft: { x: 2, y: 2 },
????????????????? lowerRight: { x: 4, y: 4}
??????????????? };
?
var square = { "upperLeft": { x:point.x, y:point.y },
?????????????? 'lowerRight': { x:(point.x + side), y:(point.y+side) }};
?
?
5.基本数据类型和引用类型的区别
?
?? 基本类型:Numbers, boolean values, and the null and undefined?? 在内存中有固定的大小
?? 引用类型:Objects, arrays, and functions?? 在内存中没有固定的大小
?? 基本类型的变量指向的一个实际的数值,引用类型的变量指向的是一个引用一个地址(这点与java里的是一样的)
?
string类型比较特殊,其大小不确定,显然是不能以固定的大小存储,它并不是像引用类型那样也不像基本数据类型一样,它是不变类型(immutable)
到底什么是不变类型,还得深入学习。
strings behave like a primitive type in many ways.
In the end, it doesn't matter much whether you think of strings as an immutable reference type that behaves like a primitive type or as a primitive type implemented with the internal efficiency of a reference type.
?
?
6.变量和属性
变量和属性在js中其实质是一样的
The Global Object:在客户端的javascript,Window 对象是所有运行在浏览器里的js代码的全局对象。可以用关键定this引用此对象,也可以用window这个属性引用。Window对象定义了一些核心的全局属性。
Local Variables: The Call Object? 局部变量同样也是一个对象的属性,只不过其使用的范围比全局变量小,只能在一个方法里使用
js解释器在开始运行一个函数时都会为一个函数创建一个新的执行上下文,并不是运行在使用全局对象运行的那个上下文中。每一个js函数都在自己的上下文中执行,都有自己的局部变量。
?
?
?
?
?