安安123

第四章 javascript的语句、对象笔记摘要

表达式语句

greeting ="Hello"+name;//赋值语句
i*=3;
count++;
delete o.x;         //删除
alert(greeting);    //函数
window.close();
y=Math.cos(x);

复合语句和空语句

function(){
    x=Math.PI;
    console.log("x="+x);
}
//初始化一个数组
for(i=0;i<a.length;a[i++]=0);

1.if…else…; else if
2.switch
3.while,do/while,for(in)
4.break,continue,return
5.标签语句
6.throw

  <script>
        var str="Hello";
        function demo(){
           try{
               var e=document.getElementById("txt").value;
               if(e==""){
                   throw "请输入:";
               }
           }catch (err){
               alert(err);
           }
        }
        demo();
    </script>

7.try/ catch/ finally

   <script>
        var str="Hello";
        function demo(){
            try{
                alert(str);
            }catch (err){
                alert(err);
            }
        }
        demo();
    </script>

8.with
嵌套很深的时候用with简化代码

document.forms[0].name.value;
document.forms[0].address.value;
document.forms[0].email.value;

//直接访问表单元素
with(document.forms[0]){
    name.value="";
    address.value="";
    email.value="";
}

9.debugger
以调试模式运行
10.use strict
严格代码解析

对象

1.对象常见用法:创建、设置、查找、删除、检测、枚举
2.属性特性:可写(是否可以设置值)、可枚举(是否能通过for/in循环返回)、可配置(是否可以删除或修改)
3.对象特性:原型、类、扩展标记
4.分类
(1)内置对象:ECMAScript规范定义的对象或类。如:字符串、数值、数组、函数、日期、正则表达式
(2)宿主对象:JavaScript的解释器所嵌入的宿主环境定义的(如Web浏览器)。如:表示网页结构的HTMLElement
(3)自定义对象:运行中的Javascript代码创建的对象
(4)自有属性:直接在对象中定义的属性
(5)继承属性:在对象的原型对象中定义的属性

创建对象

1.对象直接量

var empty={};       //没有任何属性
var point={x:0,y:0};        //两个属性
var book={
    "main title":"JavaScript",             //属性名有空格,必须用字符串表示
    'sub-title':"The Definitive Guide",    //属性名有连字符,必须用字符串
    "for":"all audiences",         //保留字,必须用引号
    author:{
        firstname:"David",
        surname:"Flanggan"
    }
};

2.通过new创建对象

var a=new Array();
var r=new RegExp("js");

3.原型
普通对象都有原型
所有内置构造函数都具有一个继承自Object.prototype的原型
一系列原型对象就是原型链
new Date创建的Date对象的属性同时继承Date.prototype和Object.prototype

4.Object.create()(待补充)

var o1=Object({x:1,y:2});   //o1继承了属性x和y

5.通过函数创建对象

function people(name,age){
    this.name=name;
    this.age=age;
}
son=new people("Mike",18);
document.write("name:"+name+" age:"+age);

属性的查询和设置

//查询
var author=book.author;
var title=book["main title"];  //[]内必须是字符串

//设置
book.author="David";
book["main title"]="JavaScript";

继承

在原型链中一直查找,直到null为止

var o={};
o.x=1;//给o一个x属性
var p=inherit(o);
p.y=2;//p继承o,且给p一个y属性
var q=inherit(p);
q.z=3;
var s=q.toString();
q.x+q.y  //返回3,x和y分别继承自o和p

首先要检查原型链,判定是否允许复制操作

//例如,继承对象含一个只读属性x
var unitcircle={r:1};
var c=inherit(unitcircle);
c.x=1;
c.y=2;
c.r=2;/*覆盖继承来的r属性*/
unitcircle.r;  /*返回1,原型对象没有修改*/

属性访问错误

查询不存在的属性不会报错,返回undefined
查询不存在的对象(如null和undefined)的属性,会报错
设置属性失败:
1.继承只读属性
2.继承已继承且只读的属性
3.没有使用setter方法继承属性???

book.subtitle;//返回undefined,subtitle属性不存在
var length=book.subtitle.length;//抛出类型错误异常,undefined没有length属性
//避免出错的方法
var len=undefined;
if(book){
    if(book.subtitle) len=book.subtitle.length;
}
/*或者*/
var len=book&&book.subtitle&&book.subtitle.length;

删除属性

delete只是断开属性和数组对象的联系,而不会去操作属性

delete book.author;//book不再有author属性
delete book["main title"];//book不再有main title属性

只能删除自有属性,不能删除继承属性
删除成功没有任何副作用,返回true

o={x:1}
delete o.x;//删除x,返回true

不能删除会返回false的情况
删除不可配置属性(例如,通过变量声明和函数声明创建的全局对象的属性),报错:类型错误

delete  Object.prototype;//不可配置,不能删除
var x=1;//声明一个全局变量
delete this.x;//返回false
var f(){};
delete this f;//返回false

this.x=1;//声明一个可配置的全局属性
delete x;//返回true

posted on 2017-07-08 16:33  安安123  阅读(120)  评论(0编辑  收藏  举报

导航