javascript学习笔记:对象
今天学习了JavaScript对象,防止学过就忘,把自己学习中遇到的问题跟心得写下来,希望能得到各位大神的指教,多谢!
“对象只是带有属性和方法的特殊数据类型”,那么,数据类型有哪些呢?
javascript的数据类型包含: 字符串、数字、布尔、数组、对象、Null、Undefined
var什么意思?为什么定义字符串不用 string 呢?之前学了一点c#,应该是跟javascript语法不同,这个我也自己百度解决,下面是网上找到的,感觉很有用
“
var a=10; //正确
a=10; //正确
在javascript中,以上两种方法都是定义变量的正确方法。微软的Script56.CHM中是这样解释的:
尽管并不安全,但声明语句中忽略var关键字是合法的 JScript 语法。这时,JScript 解释器给予变量全局范围的可见度。当在过程级中声明一个变量时,它不能用于全局范围;这种情况下,变量声明必须用var关键字。
从上面的描述看来,对待这两种定义方法要区分以下两种情况:
⒈在一个过程级中(即位于function的定义范围内,无论是函数,还是类)的任何地方,包括在一个区块里(for,while,if……),定义变量时,使用var定义,则此变量只在这个过程级内起作用,反之为全局变量。
⒉在过程级外定义变量时,无论是否忽略var,都将定义一个全局变量。
从这点看来,JS和其他语言有不一样的地方,变量的范围不以“{}”作为边界,而是以"function(){}"为边界,而且在过程内可以很轻松的定义全局变量。如果不注意这个问题的话,是很容易产生不可预知的错误的。
对于使用var,我的建议是要养成好的使用习惯:
⒈在程序的开头,统一定义全局变量;
⒉所有的变量在定义时都要加上var;
⒊尽量不要在不同的过程中使用相同的变量名。
”
对象的含义:任何事物都可以是对象,对象包含属性和方法。
实例什么意思:实例相当于可识别的个体,比如人类是一个对象,而张三是一个实例,且这个张三必须能唯一确认。
创建对象的方法有两种,我理解的是一个是直接创建一个拥有实例的对象,另一种是通过函数构造器创建一个对象函数,需要使用的时候再创建对象实例。
官方是这样描述的
创建新对象有两种方法:
1、定义并创建对象的实例;
2、使用函数栏定义对象,再创建新的对象实例。
相关代码如下
1、定义并创建对象的实例
person=new Object();
person.fname="Bill";
person.lname="Gates";
person.age=56;
person.eyeblue="blue";
或者
var person={fname:"Bill",lname:"Gates",age:56,eyecolor:"blue"};
2、使用函数来定义对象,再创建新的对象实例
第一步:使用函数来定义对象
function person(fname,lname,age,eyeblue)
{
this.fname=fname; //这边this的作用,等式左右两边的fname有什么不同呢?(还请大神指教)
this.lname=lname;
this.age=age;
this.eyeblue=eyeblue;
//为对象创建一个方法
this.changename=changename;
function changename(newname)
{
this.fname=newname;
}
}
第二步:新建一个对象实例
var myself= new person("chen","yuan",29,brown);
var myhusband=new perspn("yang","rui",27,brown);
关于两种声明对象方法的区别,我的理解是这样的,第一种方法笨一些,适合简短不需要重用的小代码,或者已经淘汰,不推荐使用;第二种方法对象可以被重复创建使用,增加了代码的可重用性。这种理解是不是对的呢?
关于document.write()我有很深的疑问,比如下面两段代码:
第一段代码,这是可以正常执行的:
<body>
<p>点击下面的按钮,循环遍历对象 "person" 的属性。</p>
<button onclick="myFunction()">点击这里</button>
<p id="demo"></p>
<script>
function myFunction()
{
var txt=" ";
var person={fname:"Bill",lname:"Gates",age:56};
for (var x in person)
{
txt=txt + person[x]+" ";
}
document.getElementById("demo").innerHTML=txt;
}
</script>
</body>
但是把代码改成这样,就无法执行了,不知道错在哪里?
<script>
function myFunction()
{
var txt=" ";
var person={fname:"Bill",lname:"Gates",age:56};
for (var x in person)
{
txt=txt + person[x]+" ";
}
document.write(txt);
}
<script>
共同学习,写下你的评论
评论加载中...
作者其他优质文章