手记

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>
1人推荐
随时随地看视频
慕课网APP

热门评论

自问自答,this今天看了资料,依然一知半解,说有四种情况,后面两种情况我没接触过,应该还要深入学习,前面两种情况我看不出差别,都是函数调用啊,omg,继续看书吧,希望后面能越来越深入理解,加油↖(^ω^)↗

查看全部评论