JavaScript编程全解学习日记 一
来源:互联网 发布:淘宝网皮草 编辑:程序博客网 时间:2024/05/01 20:18
第五章 变量与对象
5.1 变量的声明
var a = a || 7 //一种习惯用法,如果变量a有了某个值,(可以被转换为true的值)就直接使用,否则把7赋给a
.
5.2 函数的参数(值传递)
function change (a,b){ var temp = a; a = b; b = temp;}var one = 1;var zero = 0;alert(change(one,zero)); 1 0 //变量的值并未改变
5.3 变量与属性
在js中,变量就是属性。变量可以分为全局和局部变量。全局变量是全局对象的属性。
var x = "foo";alert(this.x); //通过this.x 进行访问foo
最外层代码中this是对全局对象的引用。可以将this赋值给全局变量global。
var global = this; //global既是全局对象的属性,也是全局对象的引用。
局部变量:是在函数调用时被隐式生成的对象(称为call对象)的引用。
5.14 this引用
※ 在最外层代码中,this引用的是全局对象。
※ 在函数内部,this引用根据函数调用的方式不同而不同。
函数的调用方式 ———————————— > this引用的对象
构造函数调用——————————————>所生成的对象
方法调用 ————————————————>接受放对象
var obj = { x:3,doit:function (){ aleret(this.x)}}fn = obj.doit; //将obj.doit引用的function对象赋给全局变量fn(); // 函数内this指向全局对象method is called . undefined
apply 或call调用—————————————> 有apply或call参数指定的对象
在Function对象中包含apply和call两个方法。它们可以显示的指定接受方对象。
function f (){ alert(this.x)}var obj = {x:4};f.apply(obj); //通过apply调用函数f,函数内部的this指向obj对象4f.call(obj); //同样4
apply和call的区别是对于其他参数的传递方式,apply的剩余参数通过数组传递。call直接按原样传递。
function f (a,b){alert(a +b)}f.apply(obj,[1,2])f.call(obj,1,2)
在实际中,我们通常为了函数回调而使用apply和call
其他方式调用———————————————> 全局对象
5.16 原型链
※ 所有的函数(对象)都具有prototype的属性
※ 所有的对象都含有一个隐形链接,指向在对象生成过程中所使用的构造函数(Function对象)的prototype对象。
所有的对象最终都会具有一个Object.prototype对象的隐式链接。
注意:
function MyClass(){}var obj = new MyClass();
MyClass.prototype所引用的对象是obj的原型对象。并不是MyClass的原型对象。Function.prototype引用的对象才是MyClass的原型对象。
5.17 对象与数据类型
数据类型判定(constructor属性)
通过对象的constructor属性来从对象处获取其构造函数。
var d = new Date();alert(d.constructor)function Date(){ [native code]}
注意:constructor属性不是对象的直接属性,而是通过原型链查找到的属性。
function Derived(){}; //派生类function Base(){}; //基类Derived.prototype = new Base();var obj = new Derived();alert(obj.constructor)function Base(){}
与obj.constructor的原型链相连的实体是Derived.protorype.constructor.
数据类型判定(instanceof运算)
var d = new Date();alert(d instanceof Date)true
属性的枚举
for in 来枚举属性,都会对原型链进行搜索。若要对直接属性判断时可以用hasOwnProperty方法
for(var name in obj){ if(obj.hasOwnProperty(name)){ alert(name) // 直接属性 }}
- JavaScript编程全解学习日记 一
- JavaScript学习日记(一)
- JavaScript编程全解学习日志 二
- JavaScript编程全解学习 三 WebSocket
- JavaScript编程全解笔记
- JavaScript全栈学习笔记(一)
- 【学习日记】JavaScript基础
- javascript学习日记
- javascript学习日记
- javascript学习日记
- javascript学习日记1
- 黑马程序员学习日记----Socket编程(一)
- 小菜鸟的C++游戏编程学习日记(一)
- LinuxShell编程学习日记
- 黑马程序员 学习日记 解(一)
- PHP学习日记一
- DODS学习日记(一)
- Ajax学习日记一
- Windows 常用命令
- java序列化简单使用
- 递归经典问题详解
- 【资源汇集.转】C++编程学习52个经典网站 强力推荐
- 17. Letter Combinations of a Phone Number
- JavaScript编程全解学习日记 一
- posix线程使用详解
- Camera2.0新API下的摄像头预览、原始图像数据获取等
- Android 上拉面板 AndroidSlidingUpPanel
- 百度地图定位API,精度提高
- Android开发工具
- codeforces_652C. Foe Pairs
- 集合第八发练习之容器版V2.0
- 最小二乘法求AR模型