Home > Article > Web Front-end > Is javascript object-oriented?
Javascript is not a strictly object-oriented language, but a client-side scripting language based on object-driven and event-driven programming. Reason: Object-oriented includes three major features: encapsulation, inheritance, and polymorphism; while JavaScript only has encapsulation, and inheritance only simulates inheritance, not object-oriented.
The operating environment of this tutorial: windows7 system, javascript version 1.8.5, Dell G3 computer.
Javascript is not a strictly object-oriented language, but a client-side scripting language based on object-driven programming; it can not only create objects, but also use existing objects.
Why is JavaScript not an object-oriented language?
Because object-oriented includes three major characteristics: encapsulation, inheritance, and polymorphism. There is only encapsulation in JavaScript, and inheritance is only simulated inheritance, not object-oriented.
All said, in JavaScript, everything is an object, properties, arrays, functions, etc. are all objects.
There is no overloading in JavaScript
There is no overloading in JavaScript. Functions with the same name defined later will Overwrite the previous functions and always only call the last one, and the formal parameters in JS are just placeholders. If you define two formal parameters, you can only pass one parameter, just to facilitate the actual parameters passed by the programmer.
When the formal parameters are not written, the actual parameters cannot be conveniently used as placeholders. In this case, the implicit formal parameters arguments[0] are used to access the first actual parameter, and arguments[1] is used to access the second actual parameter. etc.
Use functions to simulate classes
Generally, the first letter of the name of a class is capitalized. 1. There is a constructor when defining the class, 2. Methods The attribute value of is a function.
Example:
<script type="text/javascript"> function Student (sno,sname,age) { this.sno = sno; this.sname = sname; this.age = age; this.study = function(){ alert('我是'+this.sname+',我在学习') } } var stu = new Student(1,'xiaoming',20); stu.study(); </script>
Use Object class to create instant objects
delete stu.name;//可以删除属性
Example:
<script type="text/javascript"> var stu = new Object(); stu.sno = 1; stu.sname = 'xiaoming'; stu.age = 20; stu.study = function(){ alert('我是'+this.sname+',我在学习'); } stu.study(); </script>
Simulation Inheritance
1. Use the call() function to simulate inheritance
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function Person (name,age) { this.name = name; this.age = age; this.eat = function(){ alert('姓名:'+this.name+",年龄:"+this.age+",我在吃饭"); } } function Student(sno,name,age){ Person.call(this,name,age);//相当于super(name,age) this.sno = sno; this.study = function(){ alert('学号:'+this.sno+',姓名:'+this.name+",年龄"+this.age+",我在学习"); } } var stu = new Student(1,'xiaoming',22); stu.eat(); stu.study(); </script> </head> <body> </body> </html>
2. Use the apply() function to simulate inheritance
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function Person (name,age) { this.name = name; this.age = age; this.eat = function(){ alert('姓名:'+this.name+",年龄:"+this.age+",我在吃饭"); } } function Student(sno,name,age){ Person.apply(this,[name,age]);//相当于super(name,age) this.sno = sno; this.study = function(){ alert('学号:'+this.sno+',姓名:'+this.name+",年龄"+this.age+",我在学习"); } } var stu = new Student(1,'xiaoming',22); stu.eat(); stu.study(); </script> </head> <body> </body> </html>
3. Use Prototype prototype simulates inheritance
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function Person (name,age) { this.name = name; this.age = age; this.eat = function(){ alert('姓名:'+this.name+",年龄:"+this.age+",我在吃饭"); } } function Student(sno,name,age){ this.sno = sno; this.name = name; this.age = age; this.study = function(){ alert('学号:'+this.sno+',姓名:'+this.name+",年龄"+this.age+",我在学习"); } } //1.创建父类对象 var person = new Person(); //2.子类.prototype = person; Student.prototype = person; //把父类的原型赋值给子类的原型,原型一致,模拟实现了继承。 //但是会丢失子类的属性值,全变成了undefined,即使new 对象时加上了,也不起作用 //打脸,xiaoming既吃饭也学习 var stu = new Student(1,'xiaoming',20); //动态的添加方法,即使在new对象之前没有这个方法 Student.prototype.test = function() { alert('test动态添加方法'); } stu.eat(); stu.study(); stu.test(); </script> </head> <body> </body> </html>
Through the prototype attribute of the class, you can know what attributes and methods the class has.
//1.创建父类对象 var person = new Person(); //2.子类.prototype = 父类对象 Student.prototype = person ; //把父类的原型赋值给子类对象的原型,原型一致,模拟实现了继承。
【Related recommendations: javascript learning tutorial】
The above is the detailed content of Is javascript object-oriented?. For more information, please follow other related articles on the PHP Chinese website!