温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JavaScript可以创建对象吗

发布时间:2022-04-11 10:33:29 来源:亿速云 阅读:140 作者:iii 栏目:web开发

这篇“JavaScript可以创建对象吗”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript可以创建对象吗”文章吧。

JavaScript可以创建对象。创建方法:1、用Object直接创建对象,语法“new Object()”;2、用new关键字创建对象,语法“new 对象名()”;3、用JSON创建对象,语法“object={属性名:属性值,...}”。

本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。

JavaScript无法创建对象吗

一个JavaScript对象是一个可以保存许多不同值的变量。它充当一组相关数值的容器。例如,网站的用户、银行账户中的账单都可以是JavaScript对象。

在JavaScript中,对象包含了两种值:属性和方法。

当你创建一个JavaScript对象时,需要定义它的名字,属性和方法。

创建一个JavaScript对象的方法:

1、利用Object直接创建对象

var myObj=new Object();//使用Object类创建一个空的对象
 
myObj.name="wangshihcheng";
 
myObj.age=20;
 
myObj.infor=function(){
 
document.write("名字:"+this.name);//this.的指向问题
 
document.write("年龄:"+this.age);
 
}
 
myObj.infor();//调用创建的对象里面的方法;

2、利用new关键字调用构造器创建对象

代码如下:

<script>
    var obj = new Object();
    obj.name = "Kitty";//为对象增加属性
    obj.age = 21;
    obj.showName = function () {//为对象添加方法
        console.log(this.name);
    };
    obj.showAge = function(){
        console.log(this.age);
    };
    obj.showName();
    obj.showAge();
</script>

这种方法通过new关键字生成一个对象,然后根据JavaScript是动态语言的特性来添加属性和方法,构造一个对象。其中的this表示调用该方法的对象。

这种方法的问题在于:如果我们需要多次创建对象,那么就需要重复代码多次,不利于代码的复用。

3、利用原型模式创建对象

在JavaScript中,每个函数都有一个prototype属性,它是一个指针,指向一个对象,叫做

原型对象,原型对象包含了可以由特定类型的所有实例对象共享的属性和方法;

另外,这个对象有一个自带的属性constructor,指向创建对象的构造方法;

当我们使用原型模式时可以使所有的实例共享原型对象的属性和方法,

从而我们不必要早构造函数中定义对象的实例的信息;

function Student(){
        
 
}
Student.prototype.name="wang";
Student.prototype.sex="man";
Student.prototype.class="5";
Student.prototype.sayName=function(){
    console.log(this.name);
}
 
var s1=new Student();
s1.sayName();//wang
 
var s2=new Student();
s2.sayName();//wang
 
s2.name="shicheng";
s2.sayName();//shicheng

当我们读取某个对象的属性时,都会执行一次搜索,搜索首先从对象实例本身开始,

如果在实例中找到了这个属性,则搜索结束,返回属性的值;

若实例上没有找到,则继续向对象的原型对象上面延申,搜索对象的原型对象,若在原型上面

找到这个属性,则返回原型上面属性对应的值,若没有找到,则返回undefine;

因此,可以看出,实例对象属性会覆盖原型对象上面的属性;

4、利用JSON创建对象

//object={属性名1:属性值1,属性名2:属性值2,.....}

//注意JOSN格式中属性名要加双引号;

var p={
 
"name":"wangsch",
 
"gender":"man",
 
"age":40,
 
"son":[
 
    {
 
        "name":"son1",
 
        "age":2
 
    },
 
    {
 
    "name":"son2",
 
    "age":5
 
    }
 
],
 
"infor":function(){
 
document.write("父亲的姓名:"+this.name+",父亲的年龄:"+this.age+"<br>");
 
for( var child in this.son ){
 
document.write("儿子的姓名:"+this.son[child].name+",儿子的年龄:"+this.son[child].age+"<br>");
 
                }
 
        }
 
}
 
p.infor();//调用对象p中的infor方法

5、组合利用构造函数和原型模式创建对象

构造函数用于定义实例的属性,原型模式则用于定义方法和共享的属性;

function Student(name,sex,grade){
    this.name=name;
    this.sex=sex;
    this.grade=grade;
}
 
Student.prototype.sayName=function(){
    console.log(this.name);
}
 
Student.prototype.school="nongda";

这种混合模式可以支持想构造函数传入参数,还极大的节约了内存。

6、利用动态原型方法创建对象。

代码如下:

<script>
    function Person(name,age){
        this.name = name;
        this.age = age;
        this.array = new Array("Kitty","luo");
        //如果Person对象中_initialized 为undefined,表明还没有为Person的原型添加方法
        if(typeof Person._initialized  == "undefined"){
            Person.prototype.showName = function () {
                console.log(this.name);
            };
            Person.prototype.showArray = function () {
                console.log(this.array);
            };
            Person._initialized = true;
        }
    }
  
    var obj1 = new Person("Kitty",21);
    var obj2 = new Person("luo",22);
    obj1.array.push("Wendy");//向obj1的array属性添加一个元素
  
    obj1.showArray();//Kitty,luo,Wendy
    obj1.showName();//Kitty
    obj2.showArray();//Kitty,luo
    obj2.showName();//luo
</script>

这种方法和构造函数/原型方式大同小异。只是将方法的添加放到了构造函数之中,同时在构造函数Person上添加了一个属性用来保证if语句只能成功执行一次,在实际应用中,采用最广泛的构造函数/原型方法。动态原型方法也很流行,它在功能上和构造函数/原型方法是等价的。不要单独使用构造函数和原型方法。

以上就是关于“JavaScript可以创建对象吗”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI