js对象与this指向
创建对象的方法
1.对象字面量法
var obj={}
var obj={
'first-name':'Tom',
'last-name':'bush',
age:24,
Family:{
Brother:’tony’,
Father:’jack’
}
}
对于合法的js标示符且不是表达式,并不强制要求用引号扩住属性名,对于不合法的标识符,则引号是必须的,如'first-name',对象可以嵌套
2.数组字面量法
var box=['a','b',3,4,5];
alert(box[1]); //b
//遍历
for(x in box){
document.write(x+":"+box[x]+"<br/>");
}
//0:a
//1:b
//2:3
//3:4
//4:5
//不可以box['x']或box.x
二.this 指向
在全局里this指向window,在某个对象里 this指向该对象,但在闭包里this却指向window
看以下代码
var user="the Window";
var box={
user:'the box',
getThis:function(){
return this.user;
},
getThis2:function(){
return function (){
return this.user;
}
}
}; alert(this.user);//the Window
alert(box.getThis());//the box
alert(box.getThis2()());//the Window
alert(box.getThis2().call(box));//the box 对象冒充
闭包不属于这个对象的属性或方法所以指向全局
还有一种解决方法
var box={
user:'the box',
getThis:function(){
var that=this;//指向box
return function(){
return that.user;
}
}
}
alert(box.getThis()());//the box
js对象与this指向的更多相关文章
- JS对象复制
在JavaScript很多人复制一个对象的时候都是直接用"=",因为大家都觉得脚本语言是没有指针.引用.地址之类的,所以直接用"="就可以把一个对象复制给另外一 ...
- 理解js中this的指向
学习自原文 http://www.cnblogs.com/pssp/p/5216085.html后的一点小结(原文作者总结的很棒^_^)! 关于js中this的指向,在函数定义的时候还无法 ...
- js 对象深复制,创建对象和继承
js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 ...
- 超实用的JavaScript代码段 Item8 -- js对象的(深)拷贝
js 对象 浅拷贝 和 深拷贝 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷贝: var Chinese = { nation:'中国' } var Doctor ...
- js对象小结
前奏 对象是js的基本数据类型,准确来说除了字符串,数字,boolean值,null与undifine之外,js中的值都是对象.js中的对象是一种复合值,他将很多值(原始值或其他对象)聚合在一起,可以 ...
- JS 对象、HTML事件处理、JS 类型转换、Date
1. JS 对象 <script> var Person = new Object(); Person.id = 1; Person.name = "Hello World&qu ...
- js中this的指向
在js中this的指向对于新手来说一定是个难题,但是如果你真正理解了的话,也就没什么问题啦,下面就来讲讲this吧. JS中,this的值取决于调用的模式(调用对象),而JS中共有4种调用模式: 1. ...
- JS中的this 指向问题
我发现在对JS的学习中有很多朋友对this的指向问题还是有很大的误区或者说只是大致了解,但是一旦遇到复杂的情况就会因为this指向问题而引发各种bug. 对于之前学习过c或者是Java的朋友来说可能这 ...
- js对象详解(JavaScript对象深度剖析,深度理解js对象)
js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...
随机推荐
- [datatable]两个DataTable 连接
using System; using System.Collections.Generic; using System.Text; using System.Data; namespace Cons ...
- linux下udp编程
#include<sys/types.h> #include<sys/socket.h> #include<unistd.h> #include<netine ...
- 【转】sed命令详解
原文:http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html sed命令行格式为: sed [-nefri] 'command' ...
- AOP切入点注解报错
开始学习AOP,出现如下的错误,最后发现是JDK与aspectj,aspectjweaver版本问题造成的.之后改成最新版本,代码运行正常. 利用这些特性可以进行代码的插入,比如权限,缓存结合mecm ...
- regulator
http://blog.sina.com.cn/s/blog_5e99b41e0101a3ng.html http://blog.sina.com.cn/s/blog_694348b00100n3ip ...
- iOS指纹识别代码
1:添加LocalAuthentication.framework框架 2:实现过程 #import "ViewController.h" #import <LocalAut ...
- Orchard官方文档翻译(四) 让Orchard在WebMatrix下工作
原文地址:http://docs.orchardproject.net/Documentation/Working-with-Orchard-in-WebMatrix 想要查看文档目录请用力点击这里 ...
- imp-00002 无法打开。。
路径错了无疑 文件名少了个字符无疑 文件名错了无疑
- Git 图解剖析
git中文件内容并没有真正存储在索引(.git/index)或者提交对象中,而是以blob的形式分别存储在数据库中(.git/objects),并用SHA-1值来校验. 索引文件用识别码列出相关的bl ...
- Java基础——IO流
今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...