簡體   English   中英

js中自調用功能的問題

[英]issue with self-invoking function in js

<script>
var person = function () {
    // Private
    var name = "David";
    return {
        getName : function () {
            return name;
        },
        setName : function (newName) {
            name = newName;
        }
    };
}();
console.log(person.name);  
</script>

題:

為什么顯示:控制台中未定義?

您需要使用

console.log(person.getName());  

因為name是一個閉包變量,無法在匿名函數的范圍之外訪問。

變量person包含從iife返回的值,該iife是具有屬性getNamesetName的對象,因此這些是您可以從person引用訪問的唯一屬性。

演示: 小提琴

您必須這樣分配名稱

person.name = “ABC”;

現在嘗試它會輸出abc。

您正在使用的模式來模擬士兵,你的對象的標題person建議的多個實例,所以我會建議不要使用這種模式,因為它打破了JavaScript的基礎設施來創建OOP代碼(原型)完全。

您可以改用構造函數,並用_myvar下划線標記_myvar

這是一些代碼,您可以使用它們來理解JS中的原型

原型繼承-寫出來

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM