JS构造函数的用法和JS原型

$(function(){
    //1
    var rec = new Rectangle(5, 10);
    //alert(rec.width + "*" + rec.height + "=" + rec.area());
    //alert(rec.hasOwnProperty("width"));
    //alert("area" in rec);
    //alert(rec.toString());

    //2
    var message = "hello world";
    //alert(message.endsWith("d"));

    //alert(Array.prototype.push);

    //表示的最大数字和最小数字
    //alert(Number.MAX_VALUE + " OR " + Number.MIN_VALUE);

    //3
    var n = 17;
    //alert(n.toString(2));    //其中2代表转为2进制,若将其改为16,则输出的是16进制的值s 

    //4
    //alert(parseInt("15",8)); //输出13,15的8进制(13 == 1*8+5*0)

    //5.1
    //alert(fun(5));

    //5.2
    //alert(fun2(5));

    var point = new Object();
    point.x = 1;
    point.y = 2;
    //alert(point.x + " AND " + point.y);
    //alert(delete point.x); //这一行代码有无执行会影响到下一行代码的执行结果
    //alert("x" in point);

    var arr = [1, 2, 3, 4, 5];
    //alert(arr.concat(4, [5, [6, 7]]));
    //alert(arr.slice(1, 4));    //截取数据第2个到第5个元素,包括第2个不包括第5个

    var str = "chinese";
    //alert(str.lastEndChar());

    //alert(location.href);
    //alert(location.search); //获取url地址?后面的参数列表

    //打开新窗口
    //window.open("http://www.baidu.com", "minWin", "width=400, height=350, status=yes, resizable=yes");

});

//JS构造函数 1
function Rectangle(w, h) {
    this.width = w;
    this.height = h;
    this.area = function () {
        //return this.width * this.height;    //写法1.1
        with (this) {    //写法1.2
            return width * height;
        }
    }
}

//设置Rectangle的原型值,若构造函数中无定义area方法,则默认使用原型
Rectangle.prototype.area = function () {
    return 5;
}

//重写Rectangle的toString方法
Rectangle.prototype.toString = function () {
    return this.width + " " + this.height ;
}

//2 查看字符串的结尾是否是以c结尾的 返回true OR false
String.prototype.endsWith = function (c) {
    return (c == this.charAt(this.length - 1));
}

//5.1 lambda写法(拉姆达)
var fun = function (x) {
    return x + x;
}

//5.2
var fun2 = new Function("x", "return x+x");

//返回字符串末尾的指定个数的字符
String.prototype.lastEndChar = function (num) {
    num = (null != num)? num : 1;
    return this.substring(this.length - num, this.length);
}

原创来自:背着理想去流量

时间: 2024-10-12 18:02:56

JS构造函数的用法和JS原型的相关文章

js最好的继承机制:用对象冒充继承构造函数的属性,用原型链继承 prototype 对象的方法。

js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法. function ClassA(sColor) { this.color = sColor; } ClassA.prototype.sayColor = function () { alert(this.color); }; function ClassB(sColor, sName) {//在 ClassB 构造函数中,用对象冒充继承 ClassA 类的 sColor 属性 ClassA.call(th

深入研究js构造函数和原型

很快就要从新浪离职了,最近心情比较轻松,抽点空整理一下构造函数和原型的机理. 我们都知道,在经典设计模式中我们最常用的就是工厂模式.构造函数模式.原型模式这几种,听起来‘模式’好像很高大上的样子,实际上我们在日常写js代码中会经常用到. 简单的说,工厂模式就是我们平常写的一个个函数,当要完成某项功能时,就一遍一遍调用这个函数.如: function add(a,b){ return a+b; } 这是一个很简单的代码,完成的是一个很简单的两数相加的功能,当我们需要两数相加的计算时,调用这个函数就

JS中构造函数与普通函数的区别及JS构造函数、原型和实例的关系

JS中构造函数与普通函数的区别: https://www.cnblogs.com/cindy79/p/7245566.html JS构造函数.原型和实例的关系: https://blog.csdn.net/u012443286/article/details/78823955 JavaScript构造函数及原型对象: https://blog.csdn.net/a153375250/article/details/51083245 原文地址:https://www.cnblogs.com/jim

js高级构造函数,实例对象和原型对象——prototype、__proto__和constructor构造器

一.前言 了解JavaScript面向对象,需要先了解三个名词: 构造函数,实例对象和原型对象. 注意:JavaScript中没有类(class)的概念,取而代之的是构造函数,两者类似却又有很大的差别. 先上代码,最常用的: function Person(name, age) { this.name = name; this.age = age; this.eat= function() { alert('吃西红柿') } } var person1 = new Person('小米', 28

谈谈JS构造函数

//构造函数 //使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法 //当对象被实例化后,构造函数会立即执行它所包含的任何代码 function myObject(msg) { //特权属性(公有属性) this.myMsg = msg; //只在被实例化后的实例中可调用 this.address = 'Chengdu'; //私有属性:无法通过对象直接访问 var name = 'Tirion'; var that = this; //私有方法 function sa

js:深入prototype(下:原型重写)

//当属性和方法特别多时,编写起来不是很方便,可以通过json的格式来编写 //由于原型重写,而且没有通过Person.prototype来指定,此时的constructor不会再指向Person而是指向Object //如果constructor真的比较重要,可以在json中说明原型的指向 function Person(){ } Person.prototype = { //constructor:Person,   //手动指定constructor name:"octopus"

用JS实现避免重复加载相同js文件

我们在日常开发过程中,可能有重复加载同一个资源例如:1.js,为了提高性能和用户体验这里我们用原生JS实现同一个资源只加载一次. 下面是 common.js里的JS代码 //使用沙箱模式防止污染外面的变量 ; (function () { //让外面可以只能访问到require变量 window.require = require; //定义一个加载模块的方法 function require(moduleName, callback) { //创建加载模块的具体实现类 var requireH

atitit.js的 字符串内容 转义  js处理html

atitit.js的 字符串内容 转义  js处理html 1. js处理html的问题 1 2. js的 字符串内容 转义 1 2.1. 处理流程 1 3. 下面的表格列出了其余的特殊字符,这些特殊字符都可以使用反斜杠来添加到文本字符串中: 2 4. --code 2 1. js处理html的问题 反斜杠问题 引号问题.回车换行造成的语句中断问题.. 2. js的 字符串内容 转义 一个回车 还有一个换行转义 一个引号转义.. 反斜杠转义 2.1. 处理流程 先替换反斜杠.在引号,在回车,在换

使用Underscore.js的template将Backbone.js的js代码和html代码分离

这段时间在学习Require.js和Backbone.js的过程中,发现有些项目里的HTML代码都是写在View的js代码里面的,渲染的时候需要对Collection进行循环,再将HTML代码拼接上去,这似乎不是一件非常好的事情,因为将js代码和html代码融合到一起会增加代码的维护难度,而且这个过程中考虑到性能的因素,需要将HTML代码放到一个数组中,最后进行拼接,代码写起来比较麻烦.我看到他们的代码之后就在考虑是否有一种类似php模板引擎的东西可以将Collection传递进去然后渲染. 我