夜光带你走进JavaScript(四十)擅长的领域

夜光序言:

 

 

若忆能泪下,往事便可作一场作揖的感激,醒来,天依旧清亮,风仍然分明,而光阴的两岸,终究无法以一苇蒹葭收场,我知意,却已相隔。

 

 

 

 

 

 

 

 

 

 

 

 

正文:

通过值传递参数

在函数中调用的参数是函数的隐式参数。

JavaScript 隐式参数通过值来传递:函数仅仅只是获取值。

如果函数修改参数的值,不会修改显式参数的初始值(在函数外定义)。

隐式参数的改变在函数外是不可见的。


通过对象传递参数

在JavaScript中,可以引用对象的值。

因此我们在函数内部修改对象的属性就会修改其初始的值。

修改对象属性可作用于函数外部(全局变量)。

修改对象属性在函数外是可见的。


嗯唔:JavaScript 函数调用


JavaScript 函数有 4 种调用方式。

每种方式的不同在于 this 的初始化。


很帅气~~      this 关键字

一般而言,在Javascript中,this指向函数执行时的当前对象。

我们需要注意一下: this 是保留关键字,你不能修改 this 的值。

 

 


嗯唔:作为一个函数调用

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>夜光</title>
</head>
<body>

<p>
    全局函数 (myFunction) 返回参数参数相乘的结果:
</p>
<p id="demo"></p>
<script>
    function myFunction(a, b) {
        return a * b;
    }
    document.getElementById("demo").innerHTML = myFunction(10, 2);
</script>

</body>
</html>

在 HTML 中默认的全局对象是 HTML 页面本身,所以函数是属于 HTML 页面。

在浏览器中的页面对象是浏览器窗口(window 对象)。

 

以上函数会自动变为 window 对象的函数。

myFunction() 和 window.myFunction() 是一样的:


 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>夜光</title>
</head>
<body>

<p>哟~~     全局函数 myFunction() 会自动成为 window 对象的方法</p>
<p>myFunction() 类似于 window.myFunction()</p>
<p id="demo"></p>
<script>
    function myFunction(a, b) {
        return a * b;
    }
    document.getElementById("demo").innerHTML = window.myFunction(11, 1);
</script>

</body>
</html>

 

全局对象

当函数没有被自身的对象调用时 this 的值就会变成全局对象。

在 我们的

web 浏览器中全局对象是浏览器窗口(window 对象)。

这个例子返回 this 的值是 window 对象:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>夜光</title>
</head>
<body>

<p>在 HTML 中 <b>this</b> 的值, 在全局函数是一个 window 对象。</p>
<p id="demo"></p>
<script>
    function myFunction() {
        return this;
    }
    document.getElementById("demo").innerHTML = myFunction();
</script>

</body>
</html>

函数作为全局对象调用,会使 this 的值成为全局对象。

 

记住:     使用 window 对象作为一个变量容易造成程序崩溃。

函数作为方法调用

在 JavaScript 中我们

可以将函数定义为对象的方法。

以下例子创建了一个对象 (myObject), 对象有两个属性 (firstNamelastName), 及一个方法 (fullName):

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>夜光</title>
</head>
<body>

<p>myObject.fullName() 返回 001 002:</p>
<p id="demo"></p>
<script>
    var myObject = {
        firstName:"001",
        lastName: "002",
        fullName: function() {
            return this.firstName + " " + this.lastName;
        }
    };
    document.getElementById("demo").innerHTML = myObject.fullName();
</script>

</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值