如何将私有方法暴露为公共方法使用
6.将私有方法暴露为公共方法使用
------------------------
**知识点**
1.如何创建私有方法?
2.如何调用私有方法?
------------------------------------------------------------
1.如何创建私有方法?
----------------
使用立即执行函数创建私有方法
------------------------------------------------------------
2.如何调用私有方法?
----------------
将私有方法封装到一个对象字面量中,通过全局变量返回到全局
------------------------------------------------------------
### 示例代码: code/demo06.html
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>将私有方法暴露为公共方法使用</title>
</head>
<body>
<script>
// 之前我们总是想尽办法将一些成员隐藏起来,其实,有时我们有必要将一些私有方法暴露出来给全局对象使用
// 创建一个数组的检测对象
var array = null;
// 通过自执行函数来给这个全局变量赋值,实现私有方法暴露
(function (){
//私有方法
// 判断是否是数组?
function isArray(arr) {
return Array.isArray(arr);
}
// 查询指定元素是否在数组中存在,并返回索引位置
function indexOf(arr, data) {
for (var i = 0; i < arr.length; i += 1) {
if (arr[i] === data) {
return i; // 找到了则返回索引
}
}
return -1; // 没找到返回 -1 (-1是一个非法的索引值)
}
// 通过全局变量,将这几个方法暴露出来
array = {
isArray: isArray,
indexOf: indexOf,
inArray: indexOf // 防止当indexOf不可用时, inArray可用
};
}());
console.log( array ); // {isArray: ƒ, indexOf: ƒ, inArray: ƒ}
console.log( array.isArray([4,5,6]) ); // true
console.log( array.indexOf(['html','css', 'javascript'], 'css')); // 1
// inArray()也可以正常工作
console.log( array.inArray(['html','css', 'javascript'], 'css')); // 1
// 如果给indexOf()一个非法数据
array.indexOf = null;
// 下面这个语法肯定挂掉了
// console.log( array.indexOf(['html','css', 'javascript'], 'css')); // 1
// 但是 inArray()还是可用的
console.log( array.inArray(['html','css', 'javascript'], 'css'));
</script>
</body>
</html>
```