javascript变量和对象要注意的点
js对象和变量,对象本身是没有名称的,之所以使用变量是为了通过某个名称来称呼这样一种不具名称的对象。
变量分基本变量和引用类型变量。
将基本类型的的值付给变量的话,变量将这个值本身保存起来。
<script type="text/javascript">
function p(){
var len=arguments.length;
for(var i=0;i<len;i++){
document.write(arguments[i]+"<br/>");
}
}
var a=123;
var b=a; //b把123保存起来,之后b与a没有关系了,操作b不影响a了
b++;
p(a,b);//123,124
//将一个对象赋值给一个变量,其实是把对象的引用赋值给了变量,对象本身是无法赋值给一个变量的
var a={x:1,y:2}; //a里存的是对象的引用
b=a; //b里存的是变量的引用 或者说地址,而不是变量本身,这时a,b里存的是同一个引用地址,b的操作影响对象
b.x++;
p(a.x,b.x);//2,2
//再比如
var a={x:1,y:2};
var b=a;
var a={x:2,y:3};
p(b.x);//1
</script>
//对于交换变量值得函数,可以用javascript1.7里 增强功能
<script type="application/javascript;version=1.7">
function swap(a,b){
return [b,a];
}
var x=4,y=3;
[x,y]=swap[y,x];
p(x,y)//3,4
</script>
//变量的查找
//试图读取没有声明的变量,会引起referenceError异常
<script>
var a=a||7; //利用对已经声明的变量再次声明不会产生副作用的特性
//也可以
if(typeof a!=='undefined'){
var b=a;
}else{
var b=7;
}
//判断a是否声明(不管赋值与否)
if('a' in this){
var b=a;
}else{
b=7;
}
//然后可以放心用b了
</script>
变量和属性的实质上是一样的,不过如果变量和属性本身不存在,在处理方式上有所不同
<script>
p(x);//ReferenceError x is not undefined
p(this.x);// undefined 访问不存在的属性并不会引起错误
var obj={};
p(obj.x);//undefined
p(obj.x.y) //typeError
//一般使用
obj.x&&obj.x.y
</script>
// js不支持函数默认参数在调用函数时不检查实参和形参个数,不一致也不报//任何错误
//可以模拟默认参数
<script>
function a(pos){
pos=pos||{x:1,y:2};
return pos.x+pos.y; }
</script>
javascript构造函数与New表达式
<script>
function Myclass(x,y){
this.x=x;
this.y=y;
}
var obj=new Myclass(1,2);
p(obj.x,obj.y);
</script>
1.声明和普通函数相同
2.通过new 表达式调用
3.调用构造函数的new 表达式的值是(被新生成对象)对象的引用
4.通过new 表达式调用的构造函数内的this引用 引用了(被新生成的)对象。
构造函数会隐式执行 return this操作
如果在构造函数里显式地写有renturn 语句会分成2种情况
1.return 的是一个对象
<script>
var obj={x:3,y:4};
function My(x,y){
this.x=x;
this.y=y;
obj.child=this;
return obj;
}
var obj1=new My(1,2);
p(obj1.x,obj1.child.x);//3,1
//2.return一个基本变量 会忽略这一return 操作
function My(x,y){
this.x=x;
this.y=y;
obj.child=this;
return this.y;
}
var obj1=new My(1,2);
p(obj1.x);//1
</script>
//不建议在构造函数里使用return
javascript变量和对象要注意的点的更多相关文章
- 学习笔记:Javascript 变量 包装对象
学习笔记:Javascript 变量 包装对象 如下代码,可以输出字符的长度. var str = "Tony"; str.length; 这时再试试以下代码,返回是 undefi ...
- javascript变量 数组 对象
一 变量 1.全局变量和局部变量 在JavaScript中同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var声明一次.这种变量类型不固定的语言称为动态语言,与之对应的静态语言,如 ...
- javascript判断一个变量或对象是否存在
判断一个变量或对象是否存在,是一种常用的操作.我这里收集了几种. //1. 最常用的一种方法.if(typeof v == 'undefined'){ console.log("v is u ...
- javascript变量的作用域
javascript变量的作用域 基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象 讲一个值赋值给变量时,javascript解析器首先要确定是基本类型 ...
- javascript是判断对象是否是数组
JS中的数据类型: 2大类 原始类型:值保存在变量本地的数据类型 5种:Number String Boolean undefined null Number:8bytes 舍入误差-->四舍五 ...
- JavaScript 基础回顾——对象
JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...
- javascript变量声明 及作用域
javascript变量声明提升(hoisting) http://openwares.net/js/javascript_declaration_hoisting.html 可能要FQ一下 java ...
- javascript中的对象,原型,原型链和面向对象
一.javascript中的属性.方法 1.首先,关于javascript中的函数/“方法”,说明两点: 1)如果访问的对象属性是一个函数,有些开发者容易认为该函数属于这个对象,因此把“属性访问”叫做 ...
- JavaScript 中的对象
JavaScript 中的对象 在 JavaScript 中,对象是数据(变量),拥有属性和方法. JavaScript 中的所有事物都是对象:字符串.数字.数组.日期,等等. 访问对象的属性 访 ...
随机推荐
- 最最基层的ajax交互代码jquery+java之间的json跨域传递以及java的json代码返回
首先导入jar包 上面的jar包主要是用来将map或list数据转换成json字符串,传递到前台使用. 静态页面的代码:2.html <!DOCTYPE html> <html> ...
- 如何实现Oracle修改用户权限 .
这里将介绍Oracle修改用户权限的实现过程,包括一些权限管理方面的东西.希望通过本文能对大家了解Oracle修改用户权限有所帮助. ORACLE数据库用户与权限管理 ORACLE是多用户系统,它允许 ...
- Sqool与kettle开源的ETL工具
现在的ETL都是基于管道的模式(数据流)运行,比较有名的有 TaskCTL ========================================== 数据抽取的开源工具 一个是RDBMS ...
- No data in the view dba_hist_undostat (文档 ID 1558157.1)
APPLIES TO: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 11.2.0.3 [Release 10.2 to 11. ...
- ASP.NET MVC开发微信(一)
public string index() { return Content(""); }
- 通过WebHandler给图片添加水印
图片生成webhandler水印,主要把水印的信息和位置post到webhandler去处理,返回后再div上显示 前台传递水印的信息和位置: /***********提取DIV属性********* ...
- C#中char[]与string之间的转换
string 转换成 Char[] string ss = "abcdefg"; char[] cc = ss.ToCharArray(); Char[] 转换成string st ...
- [转载]python中multiprocessing.pool函数介绍
原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...
- 0901~0907面试总结(腾讯CDC、金蝶)
纯脑记,但应该不会差太多 20150901腾讯CDC面试(初级外包岗) 0826的上午先用QQ进行了初步沟通,要求做一个不考虑AI的井字棋游戏,0830上午E-mail上交了做好的DEMO,然后等了几 ...
- SASS使用总结
简单用法: 变量 sass中可以定义变量,方便统一修改和维护. //sass style $fontStack: Helvetica, sans-serif; $primaryColor: #333; ...