js 函数常见的三种实例化方式

复制代码
 1         //工厂模式
 2         function oj(){
 3             var lio=new Object(); //创建对象,对象属性赋值
 4             lio.name='lio';
 5             lio.attr='男';
 6             lio.hobby=function(){
 7                 var li=document.createElement("p");
 8                 var txt=document.createTextNode("三妹");
 9                 li.appendChild(txt);
10                 document.body.appendChild(li);
11             };
12             return lio;
13         }
14         var person=oj();
15         //alert(person.name);
16 
17         //构造函数模式
18         function oj2(name,age){
19             this.name=name;
20             this.age=age;
21             this.hobby=function(){
22                 var li=document.createElement("p");
23                 var txt=document.createTextNode("三妹");
24                 li.appendChild(txt);
25                 document.body.appendChild(li);
26             }
27         }
28         var person2=new oj2('三妹',123);
29         person2.hobby();
30         alert(person2.name);
31 
32         //原型模式
33         function oj3(){
34             //this.name='lio';
35         }
36         oj3.prototype.name='lio';
37         oj3.prototype.love= function (name) {
38             alert("爱"+name);
39         };
40         var person3=new oj3();
41         //检测是在实例中还是在原型中
42         alert(person3.hasOwnProperty("name"));
43         alert(person3.hasOwnProperty("rename"));
44         person3.love('三妹');
45 
46         //混合模式
47         function oj4(age) {
48             this.age=age;
49             this.rename='aaaa';
50         };
51         oj4.prototype={
52             constructor:oj4,
53             name:'lio',
54             age:123,
55             love: function (name) {
56                 alert(name+"爱三妹");
57             }
58         };
59         var person4=new oj4(18);
60         alert(person4.hasOwnProperty("age"));//true
61         person4.love('lio');
复制代码

 

posted @   小猪宿州  阅读(2367)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示