JavaScript里类和私有属性的两种实现方式
JavaScript属性 实现 方式 两种 私有
2023-09-14 09:03:08 时间
<html>
<script>
function createClass(conf){
function _injectAttribute(fn){
var prototype = fn.prototype;
for(var publicName in publics){
if(!publics.hasOwnProperty(publicName))
continue;
if(typeof publics[publicName]=="function")
prototype[publicName] = function(publicName){
return function(){
return publics[publicName].apply(privates, arguments);
}
}(publicName);
else
prototype[publicName] = publics[publicName];
if(!privates[publicName])
privates[publicName] = prototype[publicName];
}
return fn;
}
var publics, privates;
publics = conf.publics;
privates = conf.privates || new Object();
var fn = function(fn){
return function(){
return fn.apply(privates, arguments);
};
}(conf.constructor || new Function());
return _injectAttribute(fn);
}
var MyClass = createClass({
constructor:function(){
console.log("constructor is called: " + this.message);
},
publics:{
message:"Hello, World",
sayJavaScript:function(){
return this._message;
},
sayABAP:function(msg){
return msg + ", " + this.ABAP();
}
},
privates:{
_message: "Hello, JavaScript",
ABAP :function(){
return "ABAP";
}
}
});
/*
var myClassInstance = new MyClass();
console.log(myClassInstance.message);
console.log(myClassInstance.sayJavaScript());
console.log(myClassInstance.sayABAP("Hello"));
console.log(myClassInstance._message);
console.log(myClassInstance.ABAP());
*/
class Developer {
constructor(name, language) {
this.workingLanguage = language;
let _name = name;
let _getName = function() {
return _name;
};
this.getName = _getName;
}
}
var Jerry = new Developer("Jerry", "Java");
var Ji = new Developer("Ji", "JavaScript");
console.log("Developer name: " + Jerry.getName());
console.log("Jerry's working language: " + Jerry.workingLanguage);
console.log("local function accessible? " + Jerry._getName);
console.log("Jerry's name: " + Jerry._name);
</script>
</html>
相关文章
- JavaScript 数据类型
- 【说站】javascript如何使用构造函数继承
- 【说站】javascript作用域的使用
- JavaScript案例:发送短信禁用按钮倒计时
- javascript正则表达式总结(test|match|search|replace|split|exec)
- JavaScript专项算法题(3):闭包
- 给 Javascript 加上面向对象的属性:Class.js
- 轻松学习 JavaScript——第 6 部分:JavaScript 箭头函数详解编程语言
- javascript中元素的scrollLeft和scrollTop属性说明详解编程语言
- JAVASCRIPT对象及属性
- JavaScript快捷键设置实现代码
- javascript的Document属性和方法集合
- javascript动画之圆形运动,环绕鼠标运动作小球
- JavaScript中的私有/静态属性介绍
- Javascript的数组与字典用法与遍历对象的属性技巧
- javascript三种方法实现获得和设置以及移除元素属性
- 正则表达式语法规则及在Javascript和C#中的使用方法
- JavaScript改变HTML元素的样式改变CSS及元素属性
- 获得Javascript对象属性个数的示例代码
- JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
- Javascript设置对象的ReadOnly属性(示例代码)
- javascript中处理时间戳为日期格式的方法
- javaScript使用EL表达式的几种方式
- javascript实现微信分享
- Javascript基础教程之if条件语句
- Javascript基础教程之函数对象和属性
- 简单方法判断JavaScript对象为null或者属性为空