[英]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是具有屬性getName
和setName
的對象,因此這些是您可以從person
引用訪問的唯一屬性。
演示: 小提琴
您必須這樣分配名稱
person.name = “ABC”;
現在嘗試它會輸出abc。
您正在使用的模式來模擬士兵,你的對象的標題person
建議的多個實例,所以我會建議不要使用這種模式,因為它打破了JavaScript的基礎設施來創建OOP代碼(原型)完全。
您可以改用構造函數,並用_myvar
下划線標記_myvar
這是一些代碼,您可以使用它們來理解JS中的原型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.