JS:为什么我需要括号来调用数字上的方法?

时间:2017-04-02 21:30:53

标签: javascript methods prototypal-inheritance

<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
    var hashTagActive = "";
    $(".scroll").click(function (event) {
        if(hashTagActive != this.hash) { //this will prevent if the user click several times the same link to freeze the scroll.
            event.preventDefault();
            //calculate destination place
            var dest = 0;
            if ($(this.hash).offset().top > $(document).height() - $(window).height()) {
                dest = $(document).height() - $(window).height();
            } else {
                dest = $(this.hash).offset().top;
            }
            //go to destination
            $('html,body').animate({
                scrollTop: dest
            }, 2000, 'swing', function(){
                hashTagActive = "";
            });
            hashTagActive = this.hash;
        }
    });
});
</script>
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="navbar">
    <ul>
        <li><a href="#1">Tervetuloa</a></li>
        <li><a href="#2">Sivupohjia</a></li>
        <li><a href="#3">Tilaa sivut</a></li>
        <li><a href="etusivu.html#4">Linkki</a></li>
        <li><a href="etusivu.html#5">Linkki</a></li>
        <li><a href="etusivu.html#6">Linkki</a></li>
        <li><a href="etusivu.html#7">Linkki</a></li>
        <li><a href="etusivu.html#8">Linkki</a></li>
        <li><a href="etusivu.html#9">Linkki</a></li>
        <li><a href="etusivu.html#10">Linkki</a></li>
    </ul>
</div>
    <div class="container">
        <div class="wrapper">
        <div class="content_primary">
            <a name="1" id="1"></a>
            <h3>Tervetuloa</h3>
            <p>Tekstiä</p>
        </div>
        </div>
        <div class="wrapper">
        <div class="content_secondary">
            <a name="2" id="2"></a>
            <h3>Sivupohjia</h3>
            <p>Tulossa</p>
        </div>
        </div>
        <div class="wrapper">
            <div class="content_primary">
            <a name="3" id="3"></a>
            <h3>Tilaa</h3>
            <p>Tekstiä</p>
        </div>
        </div>
    </div>
    <div class="footer">
        <p>&copy;&nbsp;Marko&nbsp;Ahola</p>
    </div>
</body>
</html>

为什么我必须使用括号在数字上调用此方法?

例如,function func2method(f){ return function(y) { return f(this, y); }; } Number.prototype.add = func2method(function(x, y){return x+y}); 无效,而3.add(4)完全正常。

1 个答案:

答案 0 :(得分:1)

因为3.0(3)['0']

不同

文字的解释不同。点.表示数字文字上的小数点,但对象上的点.表示属性访问器(转换为上面的方括号表示法)