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 中的所有事物都是对象:字符串.数字.数组.日期,等等. 访问对象的属性 访 ...
随机推荐
- Mingyang.net:如何获取所有的请求参数?
第一种方法:用@RequestParam. @RequestMapping(params="m=update", method=RequestMethod.POST) public ...
- [POJ 2586] Y2K Accounting Bug (贪心)
题目链接:http://poj.org/problem?id=2586 题目大意:(真难读懂啊)给你两个数,s,d,意思是MS公司每个月可能赚钱,也可能赔钱,如果赚钱的话,就是赚s元,如果赔钱的话,就 ...
- js对象2--工厂模式的由来--杂志
一:工厂模式引入前提例子 先看一个案例 <script type="text/javascript"> var person= new Object(); //创建一个 ...
- linux中如何查看进程占用了哪些端口?
使用netstat –apn | grep <进程名>便可以查看指定进程所占用的端口.
- 下拉列表autocomplete各种实现方式比较
方法一:用form 表单的datalist属性,此时会以首字母补充排序.实现效果参考:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_ ...
- 【翻译习作】 Windows Workflow Foundation程序开发-第一章03
1.2.2.Visual Studio 2005扩展包 微软也为Windows Workflow开发者提供了Visual Studio 2005扩展包.扩展包将许多功能集成到Visual Studio ...
- Nodejs文件服务器
最近一直在忙于一个比较大的项目,在项目中需要有个文件服务器来支持.老鸟们建议我去用NodeJs来实现,我在接手这个项目之前其实并不了解NodeJs,但是一直想去了解.借着这个机会好好去学习一下.下面是 ...
- 慕课网-安卓工程师初养成-4-12 Java循环跳转语句之 continue
来源:http://www.imooc.com/code/1432 continue 的作用是跳过循环体中剩余的语句执行下一次循环. 例如,打印 1--10 之间所有的偶数,使用 continue 语 ...
- VB 读取csv文件数据
Public adoConn As New ADODB.Connection Private Sub csv() adoConn.ConnectionString = "Driver={Mi ...
- alter table <表名 > add constraint <主键名>用法
alter table <表名 > add constraint <主键名>用法介绍 1.主键约束: 要对一个列加主键约束的话,这列就必须要满足的条件就是分空 因为主键约束: ...