我对javascript相对较新,但是从使用Java学到了很多关于OO编程的知识。要么javascript不是OO,要么我错过了什么。 Java的方法类似于javascripts函数,但是我注意到javascript函数也可以作为类对象而不仅仅是方法。如果一个函数可以成为一个对象,我很困惑,该对象是否应该具有可用的函数?
Javascript实施:
function Div() {
var div = document.createElement('div');
function setSize(width,height){
div.position = 'absolute';
div.style.width = width + 'px';
div.style.height = height + 'px';
div.style.background = 'black';
document.body.appendChild(div);
}
}
HTML脚本
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script type="text/javascript" src="jWebKit.js"></script>
<script>
var div1 = new Div();
div1.setSize(100,100); //Does Not Work Irritating all whom love Java...
</script>
</body>
</html>
答案 0 :(得分:3)
MDN有一个很好的introduction to OOP。基本上,为div
的每个实例制作setSize
和Div
属性:
function Div() {
this.div = document.createElement('div');
}
Div.prototype.setSize = function(width,height) {
this.div.style.width = width + 'px';
this.div.style.width = height + 'px';
};
在构造函数中创建实例属性,&#34;共享&#34;实例之间的属性存储在原型上。 ES6引入了一种新的class
语法,它可能更接近你习惯的语法,但在它下面只是创建一个构造函数并为原型添加属性。
答案 1 :(得分:1)
您的setSize方法未定义为此处类的成员,而是作为范围仅限于该函数的函数。
有许多方法和文档可以解释它是如何工作的,但是你可以用这种方式声明你的功能:
function Div() {// Acts as a class?
this.div = document.createElement('div');
this.setSize = function(width,height){
this.div.style.width = width + 'px';
this.div.style.width = height + 'px';
}
}