Java 与 Javescript 的构造函数区别

版权声明:需要转载的朋友下面留个言 https://blog.csdn.net/weixin_42955598/article/details/81837481

Java 与 Javescript 的构造函数区别

众所周知 java与 javascript其实是两种不同的语言 java是一种引用广泛的语言而javascript则是一种脚本语言 。之间的区别之前没有太多理解因为学习尚浅且两者又都是面向对象,今天学习javascript的面对对象就从面对对象之构造函数来讲解区别。
1.构造函数的作用:对对象进行初始化.

我们来看代码

function Person(name, age, job) {
                this.name = name;
                this.age = age;
                this.job = job;
                this.sayName = function() {
                    alert(this.name);
                };
                this.showAge = function(){
                    alert(this.age);
                }
            }
            var person1 = new Person("Nicholas", 29, "Software Engineer");
            var person2 = new Person();
}

这里创建两个对象 person1 , person2
如果熟悉java的朋友会觉得 javascript并没有产生构造函数 我们看一下java的构造函数String 类原码

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    private final char value[];
    private int hash; 
    private static final long serialVersionUID = -6849794470754667710L;
    public String() {
        this.value = new char[0];
    }
    public String(String original) {
        this.value = original.value;
        this.hash = original.hash;
    }
 }

这里我省略了一些备注 稍微了解java的朋友应该可以理解 由于javascrpit 的var 类型 和函数没有严格规定数量类型等。。。所有就没有java这种对于每一种情况都创建一种构造函数 也因此javascript更适合作为一种脚本语言。

那么javascript的构造函数有事如何实现的呢?

根据上面的代码我们发现 person1 和 person2 都可以执行showAge() 函数但是person1 结果为29 person2结果为 undefined ???
这里就要说到java 和javascript的构造函数的共同点

1.函数内部自然会产生一个对象,this指向这个对象

2.函数默认返回this这个对象

function Person(name, age, job) {
                var obj = {};
                this = obj ;
                this.name = name;
                this.age = age;
                this.job = job;
                this.sayName = function() {
                    alert(this.name);
                };
                this.showAge = function(){
                    alert(this.age);
                }
                return obj ;
            }

结合代码可以看到这就是 javascript 自动帮助我们执行的
当然 这个对象是需要 new 这个关键字

现在学术尚浅 我来总结一下其他博主的内容

javascript构造函数调用所经历的步骤:
1)创建一个新的对象;
2)将构造函数的作用域赋给新对象(因此this指向了这个新对象);
3)执行构造函数中的代码(为这个新对象添加属性);
4)返回新对象
(4)构造函数存在的问题:每个方法都要在每个实例上重新创建一遍。(每定义一个函数就是实例化了一个对象),不同实例上的同名函数是不相等的。其解决方法便是使用原型模型。
原文(https://blog.csdn.net/catjuting/article/details/78459416)

java构造函数与普通函数的区别:

(1). 一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。
(2). 构造函数是在对象建立时由jvm调用, 给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。
(3). 普通函数可以使用对象多次调用,构造函数就在创建对象时调用。
(4). 构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可。
(5). 构造函数没有返回值类型
原文(https://blog.csdn.net/qq_33642117/article/details/51909346)

其中两篇文章页讲到了 javascript 的原型prototype 和java的构造代码块都值得学习!

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

猜你喜欢

转载自blog.csdn.net/weixin_42955598/article/details/81837481