JS创建对象的几种方式详解

 Js是一门面向对象的语言,里面没有类的思想,所以直接是创建对象,下面介绍几种创建对象的方法:

    1.对象字面量的方法:记住键值对格式:{key:value,key :value}

实例:

Var obj={name:”演员”,move:”长城”,age:”18”}

如果想再创建一个新的对象,只能重复上面的操作,所以可操作性差,不能被重复使用,造成的直接后果就是代码的冗余度很高

2使用内置的构造函数 object

Var obj=new Object();

Obj.name=”梁朝伟”;

Obj.movie=”赤壁“;

Obj.age=”38”;

如果我们想在定义一个新的对象,该段代码的缺点显而易见了

3.封装一个工厂函数来解决上述的问题

function createStar(name,movie ,age){

  var o=new Object();

  o.name=name;

  o.movie=movie;

  o.age=age;

  o.say=function(){

    console.log(“我是”+this.name);

  }

  return o;

}

 var obj=createStar(“”,””,28);

 var obj1=createStar(“”,””,38);

4.自定义构造函数

      //什么是构造函数?
      //构造函数其实也是函数,但是通常用来初始化对象
     //并且和new关键字同时出现

    function Person(){
    this.name="憨力";
    this.age=28;
    this.say=function(){
        alert("我是"+this.name);
    }
  }

 var p=new person();

 也就是可以进行传值,此时this指向的就是p对象

 遇到的问题1

 如果person(),被当成普通的函数执行,就会遇到一个问题,this的指向会是windows

 遇到的问题2

 每创建一个新的对象,函数say就会被调用一次,这样就造成了函数被多次调用,造成了系统资源的极大栏废

 

如果在在构造函数之外创建一个函数呢?

  :function say(){

   alert(“”);

 }

 把上面的函数改成有参数的函数

   function Person(name,age,func){
    this.name=name;
    this.age=age;
    this.say=func;  }

   var pp=new Person(“”,””,say);

但是又会造成新的问题;全局变量的污染,怎么解决呢?就涉及到原型的问题了。

预知后文如何,且听以后的分解吧!

posted @   点小二  阅读(1752)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示