关于javascript 里面类型的判断

javacript至今共有7中类型
Six data types that are primitives:

  1. Boolean
  2. Null
  3. Undefined
  4. Number
  5. String
  6. Symbol (new in ECMAScript 6)
  7. Object

关于typeof的详情解释

demo1:

Function.prototype.toString() 与 Object.prototype.toString()的区别:


var f = function(){};
f.prototype.hasOwnProperty("toString") ; //=>false
Function.prototype.hasOwnProperty("toString"); //=>true


Object.prototype.toString.call(f); //=>[object Function]

Function.prototype.toString(f);  //=>"function () {}"

Object.toString.call(f) ;  //=>"function () {}"

//注:Object 是由Function构造的,所以Object.toString会这样 ,由Object.__proto__.toString 遍历原型链去找到Function.prototype.toString() 打印,所以会打印function f(){}

//jquery 类型的判断,demo2
{}.toString.call(f);  //=>[object Function]

所以,所有由Object.prototype.toString 方法调用的对象,都是会打印出[object Function],[object String] 或者其他类似的格式,而这个结果也常常会被我们用来去判断这是否是一个String 字符串,Array ...

Object.prototype.toString.call([]) === "[object Array]"  // ==>"[object Array]"

Object.prototype.toString.call({}) === "[object Array]"  // ==>"[object Object]"
demo2:

jQuery.type() 方法的源码解析:

var class2type = {};

// Populate the class2type map
/* 覆盖class2type: 用做返回的的类型
  var class2type = {
    "[object Boolean]":"boolean",
    "[object Number]":"number",
    "[object String]":"string",
    "[object Function]":"function",
    "[object Array]":"array",
    "[object Date]":"date",
    "[object RegExp]":"regexp",
    "[object Object]":"object",
    "[object Error]":"error"
}
*/
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
function( i, name ) {
    class2type[ "[object " + name + "]" ] = name.toLowerCase();
} );
    ...
    type: function( obj ) {
        //  return null
        if ( obj == null ) {
            return obj + "";
        }
    
        // Support: Android <=2.3 only (functionish RegExp)
        // 支持: Android <= 2.3 版本  ?(functionish RegExp)
        // 如果是个函数的话,返回class2type[{}.toString.call(obj)]
        return typeof obj === "object" || typeof obj === "function" ?
            class2type[ toString.call( obj ) ] || "object" :
            typeof obj;
    },
    ...

On IE 6, 7, and 8 a lot of host objects are objects and not functions. For example: typeof alert === 'object'

This stnds since the beginning of JavaScript typeof null === 'object';

Regular expressions

在一些正则中,低版本的浏览器可能会不兼容es5

typeof /s/ === 'function'; // Chrome 1-12 不遵循  5.1
typeof /s/ === 'object';   // Firefox 5+  遵循 ECMAScript 5.1

转载于:https://www.cnblogs.com/Alencong/p/5861610.html

### JavaScript 中复选框操作示例 以下是基于提供的引用内容以及常见实践,展示如何在 JavaScript 中实现复选框的操作。 #### 动态添加带复选框的表格行 通过以下代码可以动态向 HTML 表格中添加一行并附带一个复选框: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Dynamic Table Row with Checkbox</title> </head> <body> <table id="myTable" border="1"> <tr> <th>Select</th><th>Name</th><th>Age</th> </tr> </table> <button onclick="addRow()">Add Row</button> <script> function addRow() { const table = document.getElementById("myTable"); const row = table.insertRow(-1); // 插入新行到表尾 const cell1 = row.insertCell(0); const cell2 = row.insertCell(1); const cell3 = row.insertCell(2); // 创建复选框元素 const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.name = 'select'; // 添加复选框和其他数据到单元格 cell1.appendChild(checkbox); cell2.innerHTML = `Name ${row.rowIndex}`; cell3.innerHTML = `${Math.floor(Math.random() * 50) + 18}`; // 随机年龄 } </script> </body> </html> ``` 此代码展示了如何创建一个新的表格行,并在第一个单元格中插入一个复选框[^1]。 --- #### 实现“全选”功能 下面是一个简单的例子,用于实现“全选”复选框的功能。当用户点击“全选”复选框时,页面上的其他复选框会被同步选中或取消选中。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Select All Checkboxes Example</title> </head> <body> <label><input type="checkbox" id="selectAll"> Select All</label><br> <label><input type="checkbox" class="itemCheckbox"> Item 1</label><br> <label><input type="checkbox" class="itemCheckbox"> Item 2</label><br> <label><input type="checkbox" class="itemCheckbox"> Item 3</label><br> <script> document.getElementById('selectAll').addEventListener('change', (event) => { const isChecked = event.target.checked; const checkboxes = document.querySelectorAll('.itemCheckbox'); checkboxes.forEach((checkbox) => { checkbox.checked = isChecked; // 同步子复选框的状态 }); }); // 反馈给全选按钮状态变化 document.body.addEventListener('change', () => { const allChecked = Array.from(document.querySelectorAll('.itemCheckbox')).every(cb => cb.checked); document.getElementById('selectAll').checked = allChecked; }); </script> </body> </html> ``` 上述代码实现了两个主要功能: 1. 当用户点击“全选”复选框时,所有的 `.itemCheckbox` 类型的复选框都会被设置为相同的选中状态[^2]。 2. 如果所有子复选框都被手动勾选,则自动更新“全选”复选框的状态;反之亦然。 --- #### 获取已选中的复选框值 如果需要获取当前已被选中的复选框对应的值,可以通过如下方式实现: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Get Selected Values</title> </head> <body> <form id="myForm"> <label><input type="checkbox" name="options" value="Option 1"> Option 1</label><br> <label><input type="checkbox" name="options" value="Option 2"> Option 2</label><br> <label><input type="checkbox" name="options" value="Option 3"> Option 3</label><br> </form> <button onclick="getSelectedValues()">Submit</button> <p id="result"></p> <script> function getSelectedValues() { const form = document.getElementById('myForm'); const selectedOptions = []; // 查找所有选中的复选框 const checkboxes = form.elements['options']; for (let i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { // 判断是否被选中 selectedOptions.push(checkboxes[i].value); } } // 显示结果 document.getElementById('result').textContent = 'You selected: ' + selectedOptions.join(', '); } </script> </body> </html> ``` 该脚本允许用户提交他们所选择的内容,并将其显示出来。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值