如何用面向对象的方法理解JavaScript函数和对象

本文深入解析JavaScript中形参与实参的区别,探讨局部变量与全局变量的作用域及影响,详解函数作为值的特性,以及对象的属性访问、属性值修改、属性枚举等操作。同时,介绍了构造函数的使用,帮助读者全面理解JS的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

形参(parameter):就是函数定义时的属性名称

实参(argument):实际调用函数时传的值

function bark(dogName, dogWeight){}这是形参

bark("Fido",50);这是实参

 

局部变量(local):

全局变量(global):

1 作用域不同,

2 局部变量可以遮蔽全局变量

3 假如函数内不用var就对一个未声明过的变量赋值,就会成为新的全局变量

4 不同js文件中的全局变量会在同一个作用域

 

函数可以作为值赋给变量,

function init(){

    alert("aaa");

}

window.onload=init;

//window.onload=init用于页面加载之后再执行该函数,实际上就是因为这个函数作为值传给了window的onload属性

 

对象:实质上就是属性的集合

对象可以用dot notation和 [""] notation访问,比如fido.weight和fido["weight"]都是在访问weight属性

对象可以改变属性的值,赋值fido.weight = 27;

可以枚举对象的所有属性,用for-in循环,比如for prop in fido,不过prop遍历的是属性的名称,fido[prop]才是属性的值

可以处理对象的数组,改变数组比改变属性的值更复杂,用for循环可以循环处理数组。注意:假如返回或打印时需要显示数组中的每一个值,要用+=,假如只需要数组的最后一个值,才可以用=。

向函数传入一个对象,就是把实参代入函数。

tip:要增加一个对象的新属性,直接为新属性赋值即可(无需定义这个新属性,fido.age=5);同理,直接删除某个属性,不止是删除值,也会删除这个属性(delete fido.age,删除成功后这个式子会返回true,删除后再调用这个属性会返回undefined)

 

向函数传入对象

函数本身有形参,将实参传入时,传递的是一个副本,不是实参本身,只是实参的一个pointer(指针),然后这个引用的副本传递给形参。

实参的调用不会影响函数的形参,但是形参在函数中的运算发生改变时,实参调用函数时所进行的运算也会随之改变

 

chaining串链

 

对象也可以有行为method,就是对象里面可以包含一个函数;对象里面的函数引用对象内部的属性,要用this;对象内部只能有匿名函数

    function Movie(title,genre,rating,showtimes){

        this.title=title;

        this.genre=genre;

        this.rating=rating;

        this.showtimes=showtimes;

        this.getNextShowing = function (){

            var now = new Date().getTime();

            for (var i=0;i<this.showtimes.length;i++){

                var showtime=getTimeFromString(this.showtimes[i]);

                if((showtime-now)>0){

                    return "Next showing of " + this.title + " is " + this.showtimes[i];

                }

            }

        };

    }

    

alert(banzaiMovie.getNextShowing());

 

中间省略了一段,函数作为对象属性之一(方法)时,调用其实是调用对象这一个属性(方法)。

 

构造函数(constructor):规定好对象的各属性的初始值;只要new object("property", "property"),就可以源源不断调用这个构造的函数,不需要每次都去创建数组。

 

 

Object

window(全局对象)

document

element

property

location

status

inload

document

domain(提供文档服务的域)

title

URL

innerHTML

childElementCount

firstChild

Method

alert

prompt

open

close

setTimeout

setInterval

getElementById

getElementsByTagName

getElementsByClassName

 

createElement

appendChild

insertBefore

setAttribute

getAttribute

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值